繁体   English   中英

将列表传递给Python函数并打印

[英]Passing list to function in Python and printing it

我正在尝试打印与用户输入的号码相对应的星期,例如,如果用户输入2,返回应该是星期二,依此类推。但是当我运行程序时,它只是不要求用户输入。请告诉我我在哪里在犯一个错误。

def return_day(num):
    days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    num = input ("Please enter the number: ")
    if int(num) <= 7:
        print(return_day( days[num - 1]))
    else:
        print("None")
 print(return_day( days[num - 1]))

那条线是你的问题。 您的函数一次执行太多操作,将输入与函数定义分开,如下所示:

def return_day(num):
 days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
 print(days[num])

num = input ("Please enter the number: ")
if int(num) <= 7:
 return_day(int(num)-1)
else:
 print("None")

首先,您不需要在这里递归。 第二,如果您是从input()函数获得的,则不需要将num变量用作函数参数。

def return_day():
    days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    num = input("Please enter the number: ")
    if int(num) <= 7:
        print(days[num - 1])
    else:
        print("None")

第三,您需要在定义后调用一个函数:

return_day(4)

然后将要求您输入

def return_day():
    days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    num = input("Please enter the number: ")
    if int(num) <= 7:
        print(days[int(num) - 1])
    else:
        print("None")


if __name__ == "__main__":
    return_day()

说明:

由于stdin的输入为string数据类型,因此应在print(days[int(num) - 1])行使用int()将其转换为整数。

考虑到在您的示例中,用户的选择将已经直接作为参数传递给函数,因此我不确定您为什么甚至需要通过input()进行用户输入。

def return_day(num):
    days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    try:
        if int(num) < 8:
            print(days[num-1])
        else:
            print("None")
    except Exception as error:
        print('Caught this error: ' + repr(error))

输出:

return_day(2)
Tuesday

return_day(8)
None

return_day('asdf')
Caught this error: ValueError("invalid literal for int() with base 10: 'asdf'",)

另外,值得一提的是,None(不带引号)是python中的保留字,因此出于多种原因最好避免使用它,其中之一是在调试应用程序时可能导致将来的混乱。

试试这个代码:

def return_day():
    days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    num = int(input ("Please enter the number: "))      #changes here

    if(num <= 7):            #changes here
        print(days[num - 1]) #changes here
    else:
        print("None")

return_day()

您正在做的错误。

  1. 永不调用该函数。
  2. 在条件中使用input(num)而不是num。
  3. 不必使用return_day(打印的天数,但仅几天。

只需取出方法外部的takeing输入并每次都及时进行转换:

def return_day(num):
    days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    if num <= 7 :
        return (days[num - 1])
    else:
        return "None"

def main():
    num = int(input ("Please enter the number: "))
    print(return_day(num))

if __name__ == "__main__":
    main()

Please enter the number: 5
Friday
def return_day(num):
    days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    print(days[num])    


num = input ("Please enter the number: ")
if int(num) <= 7:
    return_day( num - 1)
else:
    print("None")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM