2017-05-05 4 views
0

タイトルが十分説明されていることを願っています。基本的に、ユーザは数字を入力し、数字は1と147の間でなければならない。そうであれば、次に必要な入力に達する(num_guess)。しかし、数値がパラメータ内にない場合、ユーザーに再度試行させる必要があります。しかし、私はこれを行う方法を理解することはできません。前もって感謝します。else文に達した場合にループの先頭に戻る方法

word_correct = False 

def length_check(x): 
    while (word_correct == False): 
     if x >= 1 and x <= 147: 
      return word_correct == True 
      break 
     else: 
      print("Try another number") 
      # print(input("Please enter a word length: ")) ## ignore me 

word_length = input("Please enter a word length: ") 
length_check(word_length) 

num_guess = raw_input("Please enter an amount of guesses: ") 
+1

これは意味がありません....あなたは正確に何をしようとしていますか? –

答えて

0

、それは次の文を経由しません。 コードのエラーは何ですか?

  • 実装が適切ではありません。ブレークの
  • 使用するか、次のようにあなたの条件のためのコードを実装することができたい場所

ではない返す -

def length_check(x): 
    while(1): 
      temp = input() 
      if temp >= 1 and temp <= 147: 
       return 
      else: 
       print 'Enter proper length' 

これはあなたの問題を解決する必要があります。

+0

が、どのように私は再び別の番号と実行を入力するようユーザーに促しますもう一度whileループ? – MLJezus

+0

@Tyson、その部分はこのコードでは 'else'によって行われます。条件が満たされていない場合は 'else'に行き、メッセージを出力してループを反復し、再び' temp'のユーザ入力を受け取ります。 – kuro

+0

これは 'else'部分が注意します。入力がそれは '適切な長さを入力してください'と表示され、ループします。ここのwhileループの条件は何度も繰り返されます。 – bigbounty

1

この戦略は、はるかに簡潔で、再帰を利用して、この

word_correct = False 

def length_check(x): 
    while (word_correct == False): 
     if x >= 1 and x <= 147: 
      return word_correct == True 
     else: 
      print("Try another number") 
      new_word= input("Please enter a word length: ") 
      length_check(new_word) 

word_length = input("Please enter a word length: ") 
length_check(word_length) 

num_guess = raw_input("Please enter an amount of guesses: ") 
+0

これはelseステートメントでスタックされます。これらのパラメータの外にある番号を入力し、その中に1を入力すると、次の出力が生成されます。 「 ワード長を入力してください:150 は、ワード長を入力してください別の番号 をお試しください:10 は、ワード長を入力してください別の番号 を試してみてください。 」 – MLJezus

0

を試してみてください。ループが何をしようとするために必要とされない一方で:基本的には、コンパイラの出会いが返すreturn.Once後に休憩を必要としない

def main(warning=''): 
    if warning: 
    print(warning) 
    word_length = input("Please enter a word length: ") 
    if word_length >= 1 and word_length <= 147: 
    num_guess = raw_input("Please enter an amount of guesses: ") 
    else: 
    main(warning="Try another number") 
    #... now do something with num_guess 
1

ループを内部に入れようとしません。word_checkコントロールフロー&印刷メッセージから長さをチェックする責任を分けてください。

有効な値が入力されたときにのみ分解される無限ループを使用できます。

intにも忘れずに変換してください。私はあなたがpython 3を使用していると仮定していますか?ユーザーが有効な整数ではないもの(たとえば​​)を入力する可能性があるため、例外を使用してその値を処理してください。 Python 2を使用している場合はの場合はinputを入れ替えてください。

def length_check(x): 
    return x >= 1 and x <= 147 

while True: 
    try: 
     word_length = int(input("Please enter a word length: ")) 
    except ValueError: 
     print('please enter a valid number') 
     continue 

    if(length_check(word_length)): 
     break 

    print("Try another number") 

このメソッドには、inputという1つのインスタンスのみが含まれます。これにより、後で人生が楽になります。たとえば、メッセージを変更する場合、2つの場所でメッセージを変更するか、文字列変数に割り当てる必要はありません。

0

これはうまくいくかもしれない:

else: 
    word_length = input("Try another number") 
    length_check(word_length) 

間違った推測(else)のイベントでは、あなたがword_lengthに別のユーザーに入力をお願いしてから、再度チェック機能length_checkを実行します。ユーザーは数字を正しく入力してifの条件を満たすまで、好きなだけ何度でもこれを実行することができます(すなわち、間違った値を入力してelseブランチに戻ってください)。

これを使用すると、breakを使用せずに離れることがあります。問題文を満足させるプログラム以下のように

0

あなたは、他の言語でdo{} until()のようなブロックの作品にこの

word_correct = False 

def length_check(x): 
    while (word_correct == False): 
     if x >= 1 and x <= 147: 
      word_correct == True 
      break 
     else: 
      x = input("Try another number") 
      # print(input("Please enter a word length: ")) ## ignore me 
    return 
word_length = input("Please enter a word length: ") 
length_check(word_length) 
0

while True with breakをしようとします。もう一つのポイントは、再帰制限を処理することです。コードには壊れにくい制限はありません。

hint = "Please enter a word length: " 
while True: 
    x = int(raw_input(hint).strip()) 
    if 1 <= x <= 147: 
     break 
    else: 
     hint = "Try another number" 
num_guess = int(raw_input("Please enter an amount of guesses: ").strip()) 
関連する問題