2017-09-27 7 views
0

バックifやelseステートメントで行く、これは私が探しているものを最も可能性が高いですが、私は全くそれを理解することはできません、また私は私にそれを適用する方法を見つけ出すことができますコード。は、いくつかの周りを見た後のPython

Python Input Prompt Go Back

だから、基本的に私は、基本的なテキストベースのゲームをしようとしていると私は、特定の物事が/来て何かのためのヒントをドロップ言うだろう、複数のドアを持っているので、私は、ユーザーにチャンスを与えたいですすべてのドアを開ける。

今、彼らは私がそれをしたいが、彼らは、彼らが前に進むことを余儀なくしている右のドアを選択した場合、私は "追加したい方法です彼らが戻って行くことを余儀なくしている間違ったドアを、選択した場合私は非常に新しいPythonので、誰かが非常に簡単な言葉で私を助けることができたら、私は本当に感謝します、ありがとう、ここに私のコードです。

#Def# 
def purple_door():'''I'd like it to have the option to type "continue" or "go back"''' 
print('"You open the door to find a long dark hall, at the end you can see a glowing white light, perhaps a shiny medal! Oooo shiny medal!') 
input('continue') 

def red_door(): 
    print('This door opens1') 

def orange_door(): 
    print('This door opens2') 

def yellow_door(): 
    print('This door opens3') 

def green_door(): 
    print('This door opens4') 

def blue_door(): 
    print('This door opens5') 

def pink_door(): 
    print('This door opens6') 

#End Def# 

#If or Else# 

while True: 

    door_chosen = input('>') 

    if door_chosen in ('Purple', 'purple', 'Purple.', 'purple.'): 
     purple_door() 
     break 

    elif door_chosen in ('Red', 'red', 'Red.', 'red.'): 
     red_door() 

    elif door_chosen in ('Orange', 'orange', 'Orange.', 'orange.'): 
     orange_door() 

    elif door_chosen in('Yellow', 'yellow', 'Yellow.', 'yellow.'): 
     yellow_door() 

    elif door_chosen in('Green', 'green', 'Green.', 'green.'): 
     green_door() 

    elif door_chosen in ('Blue', 'blue', 'Blue.', 'blue.'): 
     blue_door() 

    elif door_chosen in ('Pink', 'pink', 'Pink.', 'pink.'): 
     pink_door() 

    else: 
     print('Please type a color stated above.') 
#If or else end# 

改善のための提案は大変ありがたいです。

編集:私は十分に私の謝罪について説明していないと思います。パープル以外のドアが選択されたときに

はい、それは別のものを選択するように強制的にあなたが紫選択するまで、これは私が起こるしたいものです。

しかし、のは、誰かがすべてのドアを開けたいと彼らの最初の推測は今、彼らは私がやりたいものを戻るためのオプションを与えている、上に移動する必要があり、紫だったとしましょう、と言います。 /// ///例

パープル

「続行、または戻って」

「あなたは紫色のドアを開けて会場に来て」 「を開くしたいどのドアを選択」

Goはバック

「あなたは戻って、他のドアを見て決める」 /// ///エンド

は、その後、あなたが紫色に選択し、準備ができたときに続けることができます。 私はそれが今より意味をなさないことを願っています。あなたはおそらく唯一のbreak文を含む紫色のドアをテストしているので、あなたのプログラムは、ユーザーが戻ってすることはできません

+3

[有効な応答を与えるまでユーザーに入力を求める](https:// stackoverflow。com/questions/23294658/valid-responseまでの入力のためのユーザーの問い合わせ) –

答えて

0

また、あなたが

def purple_door(): 
    print('"You open the door to find a long dark hall, at the end you can see a glowing white light, perhaps a shiny medal! Oooo shiny medal!') 

def red_door(): 
    print('This door opens1') 

while True: 
    door_chosen = input('Choose a door colour: ') 

    if door_chosen.lower() in ('purple', 'purple.'): 
     purple_door() 
    elif door_chosen.lower() in ('red', 'red.'): 
     red_door() 
    else: 
     print('Please type a color stated above.') 

例の出力に対してチェックする必要がある値の量を減らすために.lower()を使用して、私の変化に注意してください。

あなたのできることは、コードの#If Else#セクションを関数にすることです。そこから、ある関数がそこに戻ると、関数はpurple_doorの最後に呼び出されます。私は道に沿っていくつかの他の読みやすさの改善を行った:

color_num = {'red': 1, 'orange': 2, 'yellow': 3, 'green': 4, 'blue': 5, 'pink': 6} # for later use 


def purple_door(): 
    print('"You open the door to find a long dark hall, at the end you can see a glowing white light, perhaps a shiny medal! Oooo shiny medal!"') 
    while True: 
     choice = input('Continue? ').lower().strip(' .') 

     if choice in {'continue', 'yes', 'ok', 'why not', 'may as well'}: 
      # Continue the game 
      break 

     elif choice in {'no', 'back', 'go back', 'do not continue', 'retreat'}: 
      main() 
      break 

     else: 
      continue 

def main(): 
    while True: 
     door_chosen = input('>').lower().strip(' .') # lower forces the string to lowercase 
                 # and strip(' .') removes spaces and periods from the beginning and end 
     if door_chosen == 'purple': 
      purple_door() 
      break 

     elif door_chosen in color_num.keys(): 
      print('This door opens{}'.format(color_num[door_chosen])) # inserts the number corresponding to the door in place of the {} 

     else: 
      print('Please type a color stated above.') 

main() 
+0

ありがとう!それは私が望んでいた方法とほとんど同じでした。一つの最後の質問です。開かれたドアごとに個別の説明をしたいのですが、どうすればいいですか? –

+0

数字の値を辞書に入れるのではなく、印刷する文字列に数値を設定します。 print(color_num [door_chosen]) ' –

+0

パーフェクト! 'の代わりに' print('このドアは{}を開きます。ケースが閉まった、それは私がそれを期待どおりに働いている!どうもありがとうございました。 –

0

理由があります。他のすべてのドアは別のドアを選択するユーザーのために要求されます:

Choose a door colour: red 
This door opens1 
Choose a door colour: purple 
"You open the door to find a long dark hall, at the end you can see a glowing white light, perhaps a shiny medal! Oooo shiny medal!" 
Choose a door colour: black 
Please type a color stated above. 
Choose a door colour: red. 
This opens door1 
関連する問題