0
#!/usr/bin/env python
import easygui as eg


start = eg.msgbox('In your head, pick a number between 1 and 100. No matter what, I will guess it in no more than 7 tries. When you think of a number, press OK to start the program.')

maximum = 100
minimum = 0
middle = (maximum-minimum)/2
attempt= 1
while True:
    if attempt > 7:
        eg.msgbox('You cheated. Terminating...')
        break
    else:   
        yon = eg.boolbox("Is your number: " + str(middle) + '?', 'Guess Result',('Yes','No'))
        if yon == 1:
            eg.msgbox("Found in " + str(attempt) + " try!")
            break
        if yon == 0:
            choice = eg.boolbox("Was my guess..." , 'High or Low?' , ('High' , 'Low')
        if choice == 0:
            minimum = middle
            middle = int(round(float(maximum+minimum)/2))
        elif choice == 1:
            maximum = middle
            middle = int(round(float(maximum+minimum)/2))
        else:
            eg.msgbox"Enter valid input!";"Lets start again from the last step"
            continue
        attempt+= 1

わかりました、20 行目でインデント エラーが発生し続けます。わかりません。私の構文は問題ないようです。私は戻ってすべてのインデントを削除し、それらを再インデントしました(ミックスにスペースがないことを確認するため). なぜ私にこれを与えているのですか?どうすれば修正できますか?

私を最も混乱させたのは、EasyGUI モジュールをインポートせず、EasyGUI を変更せずに、同じコードを書き出してしまったことですが、それ以外は同じコードです。if/elif/else は同じ場所にあり、すべて同じですが、「eg.msgbox」の「print」コマンドが省略され、raw_input が「boolbox」に置き換えられています。

編集 - 20行目は次のとおりです。

 if yon == 0:

ライン

4

1 に答える 1

1
if yon == 0:
    choice = eg.boolbox("Was my guess..." , 'High or Low?' , ('High' , 'Low')

閉じ括弧が 1 つありません。

choice = eg.boolbox("Was my guess..." , 'High or Low?' , ('High' , 'Low'))

また、最後のelse:. そのはず: -

else:
    eg.msgbox("Enter valid input!","Lets start again from the last step")
    continue

最後を適切にインデントしていませんif:-

    if yon == 0:
        choice = eg.boolbox("Was my guess..." , 'High or Low?' , ('High' , 'Low')
    if choice == 0:
        minimum = middle
        middle = int(round(float(maximum+minimum)/2))
    elif choice == 1:
        maximum = middle
        middle = int(round(float(maximum+minimum)/2))
    else:
        eg.msgbox"Enter valid input!";"Lets start again from the last step"
        continue

あなたのすべてif-elif-elseはあなたの外側のifの中にあるべきです。その内部で定義された変数の状態をチェックしています。そのため、構造を次のように再インデントします。

if yon == 0:
    choice = eg.boolbox("Was my guess..." , 'High or Low?' , ('High' , 'Low')
    if choice == 0:
        minimum = middle
        middle = int(round(float(maximum+minimum)/2))
    elif choice == 1:
        maximum = middle
        middle = int(round(float(maximum+minimum)/2))
    else:
        eg.msgbox"Enter valid input!";"Lets start again from the last step"
        continue
于 2012-10-17T23:06:46.560 に答える