[英]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()
您正在做的錯誤。
- 永不調用該函數。
- 在條件中使用input(num)而不是num。
- 不必使用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.