2016-11-15 19 views
0

必要な条件を満たすときにループが終了しないのはなぜですか? コードを修正するのではなく、詳細な説明を読んでいただければ幸いです。条件が満たされたときにループが終了しない

def get_name(name_type): 
    return raw_input("Please enter you're {}name: \n".format(name_type)) 
def UserName(): 
    result = get_name("Fore"), get_name("Middle"), get_name("Sur") 
    return " ".join(result) 

print("You're UserName is : " + UserName()) 

while True: 
    def Base(): 
     return int(raw_input("Please select a base number: \n")) 
    def Power(): 
     return int(raw_input("Please select a power number: \n")) 
    def result(): 
     return Base()*Power() 

    print result() 

    cont = raw_input("Would you like to quit? yes/no > ") 
    while cont.lower() not in ("yes","no"): 
      cont = raw_input("Would you like to quit? yes/no > ") 
      if cont=="no": 
       break 
+0

あなたはとき '続きを壊していないので= = "はい"? – L3viathan

答えて

1

今それはありません:

def get_name(name_type): 
    return raw_input("Please enter you're {}name: \n".format(name_type)) 
def UserName(): 
    result = get_name("Fore"), get_name("Middle"), get_name("Sur") 
    return " ".join(result) 

print("You're UserName is : " + UserName()) 
print 

cont = 'no' 

while cont != 'yes': 
    def Base(): 
     return int(raw_input("Please select a base number: \n")) 
    def Power(): 
     return int(raw_input("Please select a power number: \n")) 
    def result(): 
     return Base()*Power() 

    print result() 

    cont = raw_input("Would you like to quit? yes/no > ") 
    while cont.lower() not in ("yes","no"): 
      cont = raw_input("Would you like to quit? yes/no > ") 
      if cont=="yes": 
       break 
+0

私はvar "cont"の名前を "discont"に変更することをお勧めします。 – Ukimiku

+0

私は、このコードが達成しない外側の 'while True'ループからOPを抜け出す必要があると思います。 – Billy

+0

ありがとう、これを修正するためのコードを調整。 – Ukimiku

0

次の2つのwhileループの中にいます。 whileループのうち条件を移動、それは動作するはずです::あなたは、ユーザーが別の方法だけ内側の1のうちに終了したい場合は、両方から抜け出すにしたいアドバイスの

from sys import exit 

... 

while True: 
    def Base(): 
     return int(raw_input("Please select a base number: \n")) 
    def Power(): 
     return int(raw_input("Please select a power number: \n")) 
    def result(): 
     return Base()*Power() 

    print result() 

    cont = raw_input("Would you like to quit? yes/no > ") 
    while cont.lower() not in ("yes","no"): 
     cont = raw_input("Would you like to quit? yes/no > ") 
    if cont=="yes": 
     break 

次のピースをあなたの質問とは関係ありませんが、とにかくそれを与えるでしょう:すべてのループ反復でBasePower、およびResult関数を定義する必要はありません。ただ、変数に値を代入し、直接印刷:

base = int(raw_input("Please select a base number: \n")) 
power = int(raw_input("Please select a power number: \n")) 
print base*power 
+1

アドバイスL3viathanと私は完全に同意してくれてありがとうございます。しかし、私の任務のためには、それぞれに1つのコマンドだけで機能する関数を使用する必要があります。私は知っている、むしろ無意味ですが、あなたはそこに行きます。 –

+0

@DarrenMacisそれでも、ループ外の関数を定義することはできます。私の答えはあなたの問題を解決しますか? – L3viathan

+0

whileループの後に何かしたいのですが? – Billy

2

あなたbreak文は、内側whileループ内にネストされているので、それはwhile Trueループではなく、そのループを壊しています。私は内側のループの外に条件文を移動し、if discont=='yes'にロジックを変更すると思います(注:より正確な記述に改名varが)何をしたいあなたを与える:

while True: 

    ... 

    discont = raw_input("Would you like to quit? yes/no > ").lower() 
    while discont not in ("yes","no"): 
     discont = raw_input("Would you like to quit? yes/no > ").lower() 
    if discont=="yes": 
     break 
関連する問題