私はPython 3.6でループの決定プロンプトを作成しようとしています。しかし、うまくいきません
def cycle():
looping = "yes"
while looping == "No" or "no" or "n" or "N":
looping = input("Do you want to make a new calculation? n t (Y/N)")
if looping == "No" or "no" or "n" or "N":
looping = "yes"
break
elif looping != "No" or "no" or "n" or "N":
print("This is not the right answer")
looping="no"
誰かがこのコードを手伝ってくれる? ありがとうございました!
回答:
回答№1は1Jean-FrançoisFabreが指摘した比較エラーと同様に、ここにも論理エラーがあります。少し簡単にするために、これはあなたの例のコードです:
looping = "yes"
while looping == "no":
(do stuff which might change looping to something else)
ザ while
ループは開始されません。あなたが書くべきです:
looping = "no"
while looping == "no":
(do stuff)
またはJean-Françoisが言ったように、
looping = "no"
while looping.lower() in ["no","n"]:
(do stuff)
それからあなたは「誰かの「いいえ」の答えを「はい」に変換しています...?
ユーザーが有効な入力を提供しない限り、ループにずっと留まり続けないでください。
def cycle():
newcalc = "no"
while True:
newcalc = input("Do you want to make a new calculation? n t (Y/N)")
if newcalc.lower() in ["no","n"]:
newcalc = "no"
break
if newcalc.lower() in ["yes","y"]:
newcalc = "yes"
break
print("This is not the right answer")
回答№2の場合は1
あなたはそのような文字列を比較することはできません:
while looping == "No" or "no" or "n" or "N": # wrong
基本的に末尾 or
ステートメントはちょうどチェックします "no"
空ではありません、など。
- もし
looping=="No"
、あなたが得るでしょうTrue
:ループは続く - もし
looping!="No"
次の "False以外"を取得するでしょう:"no"
:ループは続く
正しい方法:小文字に変換し、stringがリストに属しているかどうかをテストします。
while looping.lower() in ["no","n"]: