-1

我设法在python上创建了一个无限的while循环(它不断地反复显示高分位),并且在纠正它时遇到了麻烦,有什么想法吗?

我在高分位之后添加了一个中断并停止了无限循环,但是程序会要求人们在他们估算出他们的选择后按下退出按钮,即使他们没有按下 0。

#high scores
#demonstrates list methods

scores = []

choice = None

while choice != "0":
    print(
    """
High Scores

0 - Exit
1 - Show Scores
2 - Add a Score
3 - Delete a Score
4 - Sort Scores
"""
)

choice = input("Choice: ")
print()

#exit
if choice == "0":
    print("Goodbye")

#list high scores table
elif choice == "1":
    print("High Scores")
    for score in scores:
        print(score)

#add a score
elif choice == "2":
    score = int(input("What score did you get?: "))
    scores.append(score)

#remove a score
elif choice == "3":
    score = int(input("Remove which score?: "))
    if score in scores:
        scores.remove(score)
    else:
        print(score, "isn't in the high score list.")

#sort scores
elif choice == "4":
    scores.sort(reverse=True)

#some unknown choice
else:
    print("Sorry, but", choice, "isn't a valid choice.")


input("\nPress the enter key to exit.")

谢谢。

4

4 回答 4

1

您只有print缩进,因此其余行不属于 while 块

于 2013-08-29T10:29:09.317 回答
0

如果这是 Python 2.x,使用raw_input,input给你一个不等于 string 的整数"0",也是input邪恶的,因为它是一个安全问题。

还有缩进。

于 2013-08-29T10:30:01.733 回答
0

input() 函数自动将其结果转换为整数(因为它正在调用 eval),因此您可能希望与 0 而不是“0”进行比较:

if choice == 0:
  print("bye")

但更明智的选择是使用 raw_input:

choice = raw_input("Choice: ")

if choice == "0":
  print("bye")

请参阅有关 input() 的 Python 2.7 文档

于 2013-08-29T10:33:57.663 回答
0

此外,您可能想试试这个:

choice = input(int("Choice: "))

这将使选择成为整数类型,并有助于防止不同类型的混淆,如果编译器正在寻找一种类型但得到另一种类型,编译器将抛出错误。

例如,使用我给出的代码,我可以选择 2,它是整数类型。或者用你的,我可以给一个 2 并且它可能是字符串类型。

我对此有点生疏,所以我说的话可能并不重要。只是把它扔在那里。

于 2013-11-30T01:31:00.350 回答