/ / python 3.6でループの決定プロンプトを作成する方法 - python-3.x、loops、decision-tree

どのようにPython 3.6のループの決定プロンプトを作成する - python-3.x、ループ、決定木

私は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は1

Jean-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"]: