9

私は中学生で、Pythonでコーディングを学び始めています。ビデオ チュートリアルを見てきましたが、q を入力するとゲームを終了する方法がわかりません。ここに私が持っているもの..

print('How old do you thing Fred the Chicken is?')
number = 17

Quit = q
run = 17
while run:

guess = int(input('Enter What You Think His Age Is....'))

print('How old do you thing Fred the Chicken is?')
number = 17

Quit = 'q'
run = 17
while run:

guess = int(input('Enter What You Think His Age Is....'))

if guess == number:
    print('Yes :D That is his age...')
    run = False
elif guess < number:
    print('No, Guess a little higher...')
elif guess > number:
    print('No, Guess a little lower....')

print('Game Over')
print('Press Q to Quit')

if run == False:
choice = input('Press Q to Quit')
if choice == 'q'
import sys
exit(0)
4

3 に答える 3

13

Q入力として取得

Quit = int(input('Press Q to Quit')

Q入力としてを求めていますが、 int. そのため、次のint部分を取り外します。

Quit = input('Press Q to Quit')

ユーザーQuitが入力したものになるので、代わりに「Q」をチェックしましょうTrue

if Quit == "Q":

の代わりに、関数内にいる場合は、またはでsys.exit(0)while look を終了できます。breakreturn

また、ユーザー入力を格納するだけの変数に "Quit" という名前を付けることはお勧めしません。混乱を招くからです。

また、Python ではインデントが重要であるため、次のようにする必要があることに注意してください。

if run == False:
    choice = input('Press Q to Quit')
    if choice == "Q":
        # break or return or..
        import sys
        sys.exit(0)

ただし、それは単なるコピー/貼り付けエラーである可能性があります。

インデントと構文

インデントを修正し、余分なコードを削除して (外側のループといくつかの print ステートメントを複製したため)、次のようにしました。

print('How old do you thing Fred the Chicken is?')
number = 17

run = True
while run:

    guess = int(input('Enter What You Think His Age Is....t'))

    if guess == number:
        print('Yes :D That is his age...')
        run = False
    elif guess < number:
        print('No, Guess a little higher...')
    elif guess > number:
        print('No, Guess a little lower....')

    if run == False:
        print('Game Over')
        choice = input('Press Q to Quit')
        if choice == 'q'
            break

これにより、構文エラーが発生しました。

blong@ubuntu:~$ python3 Chicken.py
File "chicken.py", line 23
if choice == 'q'
^
SyntaxError: 無効な構文

ifしたがって、Python はステートメントの後に何か問題があると言っています。他のステートメントを見ると、このステートメントが末尾にないことにif気付くので、次のように変更します。:

if choice == 'q':

その変更により、プログラムが実行され、希望どおりに動作するように見えます。

いくつかの提案

  • あなたの指示は「Press Q to Quit」と言いますが、実際には「Q」のみを受け入れて終了します。両方を受け入れたいと思うかもしれません。Python には という演算子がorあり、これは 2 つの真理値 (Trueまたは) を取り、どちらかが真である場合Falseに返します(実際には、と以外の値でこれ以上のことを行います。興味がある場合はドキュメントを参照してください)。TrueTrueTrueFalse

    例:

    >> True or True
    True
    >>> True or False
    True
    >>> False or True
    True
    >>> False or False
    False
    

    したがって、 Q または q を で求めることができますif choice == "Q" or choice == "q":

    別のオプションは、文字列を小文字に変換しq、 を使用してのみをチェックすることif choice.lower() == "q":です。Q の場合choice、最初に q に変換し ( を使用.lower())、次に比較を行います。

  • あなたの数字は常に 17 です。Pythonには、乱数を与えるrandom.randint()という関数があり、ゲームがより楽しくなるかもしれません。たとえば、これはニワトリの年齢を 5 ~ 20 歳 (両端を含む) にします。

    number = random.randint(5, 20)
    
于 2012-10-23T01:39:33.047 に答える
1

特定のものを終了するには多くの方法があります。ループの場合は を使用しbreak、関数の場合は を使用できますreturn。ただし、プログラムの場合、解釈が終了する前 (スクリプトの終了) にプログラムを終了したい場合は、2 種類のexit()関数があります。モジュールsys.exit()の一部であるものがあり、組み込まれているものがあります。ただし、組み込み関数と関数は IDLE での使用を目的としていますが、IDLEではないプログラム (python インタラクティブ) を対象としています。sysexit()quit()sys.exit()exit()quit()

于 2012-10-23T04:13:58.417 に答える
1

次のステートメントを使用して、ループbreakから抜け出すことができます。while

while True:
    guess = int(input("...")

    # ...rest of your game's logic...

    # Allow breaking out of the loop
    choice = input("Enter Q to quit, or press return to continue")
    if choice.lower() == "q":
        break

つまり、インタープリターはwhileループを終了し、実行するコマンドを探し続けますが、ファイルの最後に到達します! Python は自動的に終了します - 呼び出す必要はありませんsys.exit

(余談ですが、めったに使用しないでください。実際には、ループからのエスケープなど、プログラムの動作を制御するためではなくsys.exitゼロ以外のexit-statusを設定するために使用されます)while

最後に、投稿したコードの主な問題はインデントです。各行の先頭に適切な数のスペースを配置する必要があります。次のようなものがあります。

if run == False:
choice = input('Press Q to Quit')

次のようにする必要があります。

if run == False:
    choice = input('Press Q to Quit')

whileforなどと同じifです。

于 2012-10-23T12:16:15.507 に答える