2017-12-06 26 views
-1

こんにちは私はコードの最後の行に問題があります。何も印刷されません。最後のコード行は実行されませんか?

invalid=True 
global invalid 
def start() 
    x = input('Type the correct key:') 
    if ("m" == x) or ("M"==x): 
    print('Correct!') 
    elif x!='m' or x!='M': 
    print('Invalid Input.') 
    invalid=False 
while invalid: 
    start() 
print('Next Question') 

入力が「m」または「M」の場合、「正解」と表示されます。
次の質問ですが、印刷されません。正解!
ありがとうございます!

+0

whileループはインデントエラーのようです。コードを正しくフォーマットできますか? –

+4

インデントを修正してください。 – James

+0

'global'宣言は、グローバルスコープではなくグローバルスコープを使用したい各関数の中に入ります。 (globalスコープの 'global'は実際にはSyntaxErrorでなければなりませんが)。 – user2357112

答えて

1

IDLEでコードを実行し、インデントがオフになっています。また、user2357112が述べたように、グローバルは関数内に入るはずですが、なぜそれを使用しているのか分かりません。

whileループの終了条件もあるはずです。今すぐループは終了しません。

def start(): 
    invalid=True 
    global invalid 
    x = input('Type the correct key:') 
    if ("m" == x) or ("M"==x): 
     print('Correct!') 
    else: 
     print('Invalid Input.') 
     invalid=False 
    while invalid: 
     start() 
     print('Next Question') 

これはあなたが条件Trueでwhileループを開始している限り、その有効なループを実行し続けますようでき

def startm(): 
    valid = True 
    while(valid): 
     x = input('Type the correct key:') 
     if ("m" == x) or ("M"==x): 
      print('Correct!') 
     else: 
      print('Invalid Input.') 
      valid=False 

を助けるかもしれません。ループはFalseになります。それは勃発するでしょう。ここ

+0

whileループの終了条件を追加するにはどうすればよいですか? –

+0

@DamjanDjurdjevic、更新された回答を確認してください。 – Maddy

+0

@DamjanDjurdjevic、それが助けられ、あなたが大歓迎であれば答えを受け入れてください。 – Maddy

0

カップルの事:あなたは論理エラーを持っている

  1. 。無効はelifがトリガーされた場合はに初期化し、Trueに設定する必要があります。
  2. start()は、それ自体の中から呼び出すことになりますが、これは不要です。その代わりに、whileは、invalidifの中にFalseに設定されている全体の定義(if-elifを含む)のまわりにある可能性があります。
-1

グローバル変数を最初に設定してからそれをTrueに設定する必要があります。これが動作します

global invalid 
invalid = True 
def start(): 
    x = input('Type the correct key:') 
    if ("m" == x) or ("M"==x): 
    print('Correct!') 
    elif x!='m' or x!='M': 
    print('Invalid Input.') 
    invalid=False 
while invalid: 
    start() 
print('Next Question') 

あなたの問題を解決できますか?

+0

これは動作しません。これは、変数が代入などの前に参照されるエラーにつながります。 – Maddy

+0

それは私のために働いた、私はスパイダーでテストした – marcos

+0

インデントを修正しましたか? – Maddy

関連する問題