如何編寫python代碼以便在elif原因內更新我的數字列表? 我從一個空的空白列表開始,然後從那裏我必須問用戶他們要添加到列表中的新分數,然後將這些數字添加到列表中。然後我必須返回到菜單系統並詢問如果用戶想要列表中這些數字的平均值,則按3。這裏我在代碼下面的代碼是,分數正在elif子句中進行更新,但是一旦我得出這個子句,列表就會變回空。請幫忙!如何更新elif子句中的列表並返回列表
回答
將綁定空列表的語句移到循環之前。
scores = []
while 1:
...
我試過,但當我試圖調用avgScores()我仍然有一個錯誤,說,「s + =分數[指數] TypeError:不支持的操作數類型爲+ =:'int'和'list'」 –
這可能是因爲你在列表中追加了一個列表。 'scores.append(addScores())'將'addScores()'的返回值附加到你的分數列表中。它看起來像'addScores()'返回一個列表。這最終會使'scores'列表成爲列表,例如:[[3,4],[7,5],[3,4]] – Matt
你addScores方法看起來像它返回一個列表,追加方法是一個單一的元素,用延長的,而不是在你的elif聲明追加。
同樣,你的addscores方法沒有實例化一個本地分數列表來追加,所以它會返回一個空列表,因爲一個永遠不會實例化。要麼將你想要修改的列表傳遞給它,要麼有一個返回的本地列表,目前你都沒有做。
首先,函數不應該在while循環中定義;在循環外定義它們並傳入參數。跟蹤分數列表的一個簡單方法是使用全局變量,以便程序中的每個函數都可以訪問它。
你修改後的代碼可能看起來像:
scores = []
def addScores():
enteredScores = []
while True:
numOfScores = input("How many new scores would you like to add: ")
try:
if int(numOfScores) > 0:
for i in range(int(numOfScores)):
newInput = input("Please enter a score: ")
enteredScores.append(newInput)
print(enteredScores)
return enteredScores
else:
print("Please enter a positive integer.")
continue
except ValueError:
print("Please enter a positive integer.")
while True:
print("0 - Clear scores")
print("1 - Input more scores")
print("2 - Print scores")
print("3 - Average scores")
option = input("Please choose an option: ")
if option == 0:
scores = []
elif option == 1:
scores += addScores()
elif option == 2:
print("Scores:", scores)
elif option == 3:
try:
avgScore = sum(scores)/len(scores)
print("Average:", avgScore)
except TypeError:
print("Invalid score contained in list.")
else:
print("Quitting current program.")
break
replay = input("Do you wish to continue? (Y/N)")
replay = replay.lower()
if replay == "y" or replay == "yes":
continue
else:
break
print("Goodbye!")
我添加了兩個的try/except語句。如果在程序中發生錯誤,並且它符合上述類型之一(ValueError和TypeError),而不是關閉程序,它將使用except語句處理錯誤。如果你沒有覆蓋這些,你可以刪除它們,程序應該工作正常。我也清理了一下邏輯 - 最初,你的重放變量沒有做任何事情,所以通過將它移動到循環中,它現在或者繼續或者中斷程序。
爲什麼是全局變量?你可以簡單地將它作爲函數參數傳遞。 另外,第一行根本沒用。全局聲明旨在聲明變量_inside function_是全局變量。 – Bakuriu
我認爲全局語法有點清晰,但它可以用任何方式。感謝關於第一行的說明,我現在就把它說出來。 –
全局變量很糟糕,幾乎不應該使用,這是糟糕的代碼實踐,並導致易受攻擊且維護性較差的代碼。它是Goto語句的python版本。如果你想要「全局變量」,你應該使用一個類和初始化自我。 –
- 1. 插入列表中的元素並返回相同的列表更新
- 2. 如何製作列表並從tkinter列表中返回其值?
- 3. 如何使用mysqli中的WHERE子句更新表列?
- 4. Java子列表不返回列表的新實例
- 5. 如何添加2D列表的列元素並返回列表中的結果?
- 6. 覆蓋「基類列表」屬性並返回「子類列表」
- 7. 將新屬性添加到列表中的對象並返回新列表
- 8. 如何檢查字符串是否在列表列表中,並返回子列表(如果是)?
- 9. 如何獲取字符串列表並返回對列表?
- 10. 如何返回R表中的並行處理列表
- 11. 如何在python中用函數(帶返回值)更新列表
- 12. 如何嘲笑一個使用WHERE子句,並返回一個列表
- 13. Json返回列表中的列表
- 14. LINQ - 返回列表中的列表
- 15. WP7 JSON返回列表中的列表
- 16. 列表中的數字返回列表
- 17. 比較列表的一個子集,並返回它在列表中的位置
- 18. 如何加入表格並更改返回列的名稱?
- 19. Python返回列表中的瓶子
- 20. 油滑2 - 更新表中的列並返回整個表對象
- 21. 搜索多維列表中的元素並返回子列表號?
- 22. 合併列表的列表並返回一個循環
- 23. 返回列表中的子列表總和
- 24. 更新列表的列表
- 25. 返回原始列表中包含的子列表的總數列表
- 26. 循環遍歷Python中的整數列表並返回兩個新列表
- 27. 如何返回字典的值列表並將其填充到列表中?
- 28. 從表中返回列從SQL Server更新表時
- 29. 如何返回不在給定列表中的實體列表
- 30. Haskell:如何返回列表中可能的分割列表
<假設家庭作業>您的教授/講師是否與您討論變量的範圍和變量傳遞的問題,看起來這兩件事會很快清理您的代碼和問題。 –