2017-03-29 5 views
-1

これは私がちょっとしたことをしているかどうかの質問です。Pythonのループと無効な回答

print("Hello") 
print("I love you") 
answer = input("Do you love me?") 
if answer in ["yes"]: 
    print("Yey! I knew it! Thank You!") 
if answer in ["no"]: 
    print("O-ok, I understand, no worries.") 


while True: 
    try: 
    print("Please answer me.") 
    answer = input("Do you love me?") 
    except ValueError: 
    continue 
    if answer in ["yes", "no"]: 
    break 

私はそれは私が欲しいものを印刷する有効な回答を入力しても、再び尋ねるループにジャンプし、私は再び答えるならば、それは壊れます。私はなぜthoを理解していない。 私は無効な回答を入力すると、それは1つの権利を得るまでループし、1つの権利を得るとそれは壊れますが答えません。誰かが理由を説明できますか? https://trinket.io/python/5a25117b84

+0

答えたコードはループの外にあるので、 – LoicM

+1

コードの最初のブロックでは、質問を一度お願いします。ループの2番目のブロックでは、「はい」または「いいえ」が得られるまで質問をしてから、ループから抜け出します。何かを印刷したい場合は、その2番目のブロックの中または後ろにいくつかのprint文が必要です。 – khelwood

+0

私はあなたがそれが何か他のことをすることを期待する方法を見ていません。コードが何を*期待していますか? (あるいは、何をしたいのですか?) –

答えて

1

ループが右でない間の位置:ここ

は、私は現在、それをテストしてきたところです。答えが無効かどうか再度確認するには、次のようにしてください:

print("Hello") 
print("I love you") 
answer = input("Do you love me?") 

while True: 
    try: 
     if answer == "yes": 
      print("Yey! I knew it! Thank You!") 
      break 
     elif answer == "no": 
      print("O-ok, I understand, no worries.") 
      break 
     else: 
      print("Please answer me.") 
      answer = input("Do you love me?") 
    except ValueError: 
     continue 
+0

このような質問に答えるなら、無意味な 'try..except'や単一の可能性を持つ' in'のような奇妙なものを修正する必要があります。 – TigerhawkT3

+0

うん、私は知っているが、私の主な焦点は、ループの位置で彼を修正することだけだった。私がしたことは、私の答えで述べたループの位置が変わっただけで、その位置は間違っていた。 –

+0

低品質のコードで「このコードを試してください」というコードは、OPには不利であり、将来の訪問者にとっては役に立たない。 – TigerhawkT3

0

あなたのコードは、それがうまくいくはずです。あなたが(「ループは再び尋ねる」)コードの第二部に「ジャンプ」

# 
# First part of your code 
# 
print("Hello") 
print("I love you") 
answer = input("Do you love me?") 
if answer in ["yes"]: 
    print("Yey! I knew it! Thank You!") 
if answer in ["no"]: 
    print("O-ok, I understand, no worries.") 

あなたの答えの後:、最初の質問(「?あなたは私を愛してください」)のコード応答のこの部分を見て:

# 
# Second part of your code 
# 
while True: 
    try: 
    print("Please answer me.") 
    answer = input("Do you love me?") 
    except ValueError: 
    continue 
    if answer in ["yes", "no"]: 
    break 

コードの2番目の部分を削除/削除する必要があります。ループ/サイクルの部分:

while True: 
    try: 
    print("Please answer me.") 
    answer = input("Do you love me?") 
    except ValueError: 
    continue 
    if answer in ["yes", "no"]: 
    break 

また、Ni3_kの回答にループを使用することもできます。

+0

このような質問に答えるなら、無意味な 'try..except'や単一の可能性を持つ' in'のような奇妙なものを修正する必要があります。 – TigerhawkT3