2016-03-28 12 views
0

は、break文を使用せずにwhileループを断ち切る

がどのように私は休憩を使用せずに、再び「入力文字列」を求めてからループを停止することができます通報しますか?ありがとう。

コード

# Remove Break 
def main(): 
    inp = 0 
    while inp <= 0: 
     inp = int(input("Enter Number: ")) 
     if inp > 0: 
      string = "" 
      while string != "you" or string != "me": 
       string = input("Input string: ") 
       if string == "you": 
        stringYou(inp) 
        break 
       elif string == "me": 
        stringMe(inp) 
        break 

def stringYou(inp): 
    sentence = "I love You" 
    print(sentence * inp) 
def stringMe(inp): 
    sentence = "You love Me" 
    print(sentence * inp) 
main() 
+0

ブレークを使用して間違っていますか?また、inp <= 0で 'not s not in(" you "、" me ") 'を使用するようにユーザーに知らせて、ユーザーがいずれかの文字列を入力するとループが終了するようにすることもできます –

答えて

0
while string != "you" or string != "me": 

ここでの条件は、それは常にtrueになります意味tautologyです。

そこには、あなたの変数stringための3つの興味深い例はここにある:

  1. string"you"に等しいです。最初の条件string != "you"は明らかに偽です。しかし、第二はstring != "me"ではありません。 string"you"であり、これは"me"と等しくありません。だからfalse or truetrueです。
  2. string"me"に等しい。同じ理由で、反対の順序を除いて、true or falseも得て、これもtrueです。
  3. です。どちらのサブ条件も真であるため、true or truetrueとなります。

したがって、条件は常に真であり、while条件はそれ自身では決して停止しません。だからあなたはそこから抜け出すために壊れなければなりません。

修正は、彼らが意味をなすように、単にあなたの条件を修正することで、ループは適切に自分自身で終了します。

while string != "you" and string != "me": 

andstringもない"you"あるとき今、ループは続きますもはや"me"である。これは、文字列がそれらの文字列のいずれかになったときに反復を停止したブレークロジックと同じです。

だから、次のようになります。

string = '' 
while string != "you" and string != "me": 
    string = input("Input string: ") 
    if string == "you": 
     stringYou(inp) 
    elif string == "me": 
     stringMe(inp) 
関連する問題