-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 の場合、 useraw_inputinputstring と等しくない整数を返します。これ"0"inputセキュリティ上の問題であるため悪です。

インデントも。

于 2013-08-29T10:30:01.733 に答える
0

また、これを試してみてください:

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

これにより、整数型が選択され、ある型を探しているのに別の型を取得した場合にコンパイラがエラーをスローする、さまざまな型の混同を防ぐのに役立ちます。

たとえば、私が与えたコードでは、2 の選択肢を与えることができ、それは整数型になります。または、あなたの場合、2 を与えることができ、それは文字列型である可能性があります。

私はこれについて少しさびているので、私が言うことは問題ではないかもしれません. そこに投げ捨てるだけです。

于 2013-11-30T01:31:00.350 に答える