2011-04-02 11 views
0

私はすべての質問が本当に簡単だと知っていますが、私は初心者ですのでここでそれは... 私はEveryonesの助けを借りて推測番号を開発していますが、左。ここではコードです:私はそれを実行コマンドの後のメニューに戻る? Python

import time 
import random 
animalmenu() 

def animalmenu(): 
    print() 
    print() 
    print() 
    print() 
    print('Welcome to the menu. I am thinking of a menu. Select the option\'s below to  try and guess my animal.') 
    print() 
    print('a) No. of Legs') 
    print('b) Type of animal') 
    print('c) Preffered Climate') 
    print('d) Size') 
    print('e) Colour') 
    print('f) Diet') 
    print('g) Habitat') 
    print('h) Can be kept as pet') 
    print('i) Guess animal') 
    print() 
    print('When in a menu, type in \'555\' to return here') 
    AniChoice = input('Choose your option: ') 
    if AniChoice == 'a': 
     loop = 10 
     while loop == 10: 
      print() 
      print('') 
      print() 
      guessleg = int(input('Guess the number of legs: ')) 
      if leg == guessleg: 
       print('True') 
      elif leg != guessleg: 
       print('False') 
      print('r = Return to menu, g = guess again.') 
      rg = input() 
      if rg == 'g': 
       print('Loading...') 
      elif rg == 'r': 
       loop = 0 
       time.sleep(1) 
       print('Returning to menu...') 
       time.sleep(1) 
       animalmenu() 

毎回、私は推測」、代わりに私はそれだけで何度も何度も質問をメニューに戻るかどうかを尋ねると、そのコードが尋ねると数で入力しますが足の数: '。私は、これは私のループ方法とは何か知っているが、私は理解していないと場合ので、整数の設定の私はそうのような、別のものを作ることができない。

  guessleg = int(input('Guess the number of legs: ')) 
      if leg == guessleg: 
       print('True') 
      elif leg != guessleg: 
       print('False') 
      elif guessleg == 'back': 
        loop = 0      
       animalmenu() 

そして、私はそれを行うための他の方法が表示されませんいずれの方法も機能していないようですか? animalmenu()に戻ることをどうお勧めしますか?

+0

を脇コメント:あなたが使用することができ、 '「」' ' '' ... – khachik

+0

@khachikを含む文字列のため、私が知っている、私はちょうどprefereを使用して、習慣。 – pythonnoobface

答えて

0

メッセージには「バック」は整数ではありませんが、整数値を入力した変数と比較しています。具体的には、次のようになります。

guessleg = int(input('Guess the number of legs: ')) 

は、ユーザーの入力からguessleg(またはより適切に試行)に値を置きます。

これを解決する方法の1つは、ユーザーの入力を文字列変数に取り込み、最初にその文字列と 'back'を比較し、必要に応じて整数に変換することです。

もう1つの方法は、整数変換の前後でtry/exceptをラップし、変換が成功した場合は整数チェックを行い、例外が発生した場合は「戻る」をチェックします。これはおそらく、これらの日好ましいと私は、コードにそれを入れている:

inp_val = raw_input('Guess the number of legs: ') 
try: 
    guess_num = int(inp_val) 
    if guess_num == leg: 
     print('True') 
    else: 
     print('False') 
except ValueError: 
    if inp_val == 'back': 
     loop = 0 
    else: 
     print 'Invalid entry' 
    animalmenu() 
+0

はい、私は理解していますが、それはうまくいかないので、どのように動物のメニューに戻ってください()? – pythonnoobface

+0

@pythonnoobface:入力の処理に関する最新の回答を参照してください。あなたが疑問に思うように、あなたは既に動物のメニューに入っています。あなたのwhileループはあなたの中にいなければなりません。私が見る限り、あなたはそれに "戻る"ことを望む理由はありません。 – GreenMatt

+0

私が言っていることは、最初のメニューの始めに戻りたいということです。サイズや色など、別のオプションを選択できるようにします。私は自分自身を説明することはあまりよくありません。 – pythonnoobface

0

あなたは入力を整数に変換してguesslegに格納するので、guesslegも整数です。ただし、'back'は文字列です。文字列と整数を比較することはできません。 3 == 'back'は何も意味しません。 インデントのために構文エラーが発生することがあります。

UPDATE:私はあなたが入力を(使用しなければならないと思います

 
def animalmenu(): 
    while True: 
    print your menu here 
    and do something.... 
    while ...: 
     get input and do something... 
     if get the input of 'back to menu': 
     break 

再びUPDATE:あなたはトップメニューに戻りたい場合は

、あなたのような何かを行うことができます)ここでは、代わりにreadline()またはraw_input()を試してください。

+0

はい私はそれを理解しており、インデントはタイプミスでした。しかし、どのようにして、手元の問題である動物園への帰還を提案しますか? – pythonnoobface

関連する問題