2017-05-02 19 views
-1

私は最近、非常に基本的なトラブルシューティングシステムのコードをいくつか完成させました。私はちょうどいくつかの検証を追加しようとしているので、ユーザが質問のいずれかにyesまたはnoでないものを入力した場合、シェルに 'Invalid input'と表示されますが、正確に行う方法がわかりません。誰か助けてくれますか?とても有難い。Pythonでエラーを出力するにはどうすればよいですか?

マイコード:

prompt = "> " 

print ("screen question one here") 
screen = input(prompt) 
if screen == "yes": 
    print ("screen question two here") 
    screen2 = input(prompt) 
    if screen2 == "yes": 
     print ("screen question three here") 
     screen3 = input(prompt) 
     if screen3 == "yes": 
      print ("screen advice one here") 
     elif screen3 == "no": 
      print ("screen adivce two here") 
    elif screen2 == "no": 
     print ("camera question one here") 
     camera = input(prompt) 
     if camera == "yes": 
      print ("camera question two here") 
      camera2 = input(prompt) 
      if camera2 == "yes": 
       print ("camera advice one here") 
      elif camera2 == "no": 
       print ("camera advice two here") 
     elif camera == "no": 
      print ("water question one here") 
      water = input(prompt) 
      if water == "yes": 
       print ("water question two here") 
       water2 = input(prompt) 
       if water2 == "yes": 
        print ("water advice one here") 
       elif water2 == "no": 
        print ("water advice two here") 
      elif water == "no": 
       print ("buttons question one here") 
       buttons = input(prompt) 
       if buttons == "yes": 
        print ("buttons advice one here") 
       elif buttons == "no": 
        print ("buttons advice two here") 
elif screen == "no": 
    print ("battery question one here") 
    battery = input(prompt) 
    if battery == "yes": 
     print ("battery question two here") 
     battery2 = input(prompt) 
     if battery2 == "yes": 
      print ("battery advice one here") 
     elif battery2 == "no": 
      print ("battery advice two here") 
    elif battery == "no": 
     print ("wifi question one here") 
     wifi = input(prompt) 
     if wifi == "yes": 
      print ("wifi advice one here") 
     elif wifi == "no": 
      print ("wifi advice two here") 
+0

まず、利用者からのyesまたはnoを取得する関数を書く:

いずれかの方法、あなたはこのようにyesornoを使用することができます。あなたが望むように働くことに焦点を当てて、それからあなたはあなたのすべての異なる質問にそれを使うことができます。 – khelwood

+1

'else'を使用してください!しかし、私はあなたが知っていると思います。 –

+0

まだ苦労している、いくつかの質問のために働いているか、まったくない。あなたは助けてもらえますか? @khelwood – Zac

答えて

1

ここであなたがそれを行う可能性があります一つの方法です。

ユーザーから「はい」または「いいえ」を取得する関数を定義します。人々が望む傾向があるのは、ユーザーがあなたに適切な応答を与えるまでこの質問を繰り返すことです。つまり、この機能が果たす役割です。

一方
def yesorno(question): 
    while True: 
     print(question) 
     answer = input('> ').strip().lower() 
     if answer in ('y', 'yes'): 
      return True 
     if answer in ('n', 'no'): 
      return False 
     print("Invalid input") 

あなたはちょうどあなたが不正な入力を取得する際にスクリプトを終了する場合は、あなたがこれを行うことができます:

def yesorno(question): 
    print(question) 
    answer = input('> ').strip().lower() 
    if answer in ('y', 'yes'): 
     return True 
    if answer in ('n', 'no'): 
     return False 
    exit('Invalid input') 

exit単にあなたの全体のプログラムを終了します。必ずしも私が推薦するものではありません。

if yesorno("Question 1"): 
    # User answered yes 
    if yesorno("Question 2A"): 
     # User answered yes 
    else: 
     # User answered no 
else: 
    # User answered no 
    if yesorno("Question 2B"): 
     ... 
+0

これは完全に動作します! .strip()はこのコードで何をしますか?ありがとうございました。 @khelwood – Zac

+0

['strip'](https://docs.python.org/3/library/stdtypes.html#str.split)は文字列から周囲のスペースを削除するので、ユーザが' 'yes ''をタイプすると'' yes ''に変換されます。 – khelwood

関連する問題