如何编写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:如何返回列表中可能的分割列表
<假设家庭作业>您的教授/讲师是否与您讨论变量的范围和变量传递的问题,看起来这两件事会很快清理您的代码和问题。 –