簡體   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