2016-11-12 8 views
0

プログラムで 'while'ループを作成する必要がありますが、正しく終了することはできません。以下は、私がこれまで持っているものです。Pythonで2つの答えを '等しくない'と書くには?

restart ="y" 
while restart == "y": 
    sentence = input("What is your sentence?: ") 
    sentence_split = sentence.split() 
    sentence2 = [0] 
    print(sentence) 
    for count, i in enumerate(sentence_split): 
     if sentence_split.count(i) < 2: 
      sentence2.append(max(sentence2) + 1) 
     else: 
      sentence2.append(sentence_split.index(i) +1) 
    sentence2.remove(0) 
    print(sentence2) 
    outfile = open("testfile.py", "wt") 
    outfile.write(sentence) 
    outfile.close() 
    print (outfile) 
    restart = input("would you like restart the programme y/n?") 
    if restart == "n": 
     print ("programme terminated") 
    else: 
     print("you were asked y or n") 

「n」が入力された場合、ループが正常に動作し、それが "「プログラムが終了する」ではなく「Y」を入力したとき、それは、プログラムを再起動するだけでなく、まだ印刷します印刷しますあなたはyまたはn "と尋ねられました。

答えて

2

restartに 'n'と異なるものがある場合、プログラムはelseに従うためです。 (yまたは他の任意の値)。 'y'を押すと、elseステートメントに続き、whileの条件もtrueと評価されます。 print文が発行されるクイックソルーションとしてelif restart != 'y'を使用することができます。次に、ループが繰り返されるようにrestartyに設定するか、ループに別の変数を使用します。

-1
if restart == "n": 
    print ("programme terminated") 
else if restart == "y": 
    print("restarting") 
else: 
    print("you were asked y or n") 

多分これはあなたが意図したものですか?

+0

ありません、これはではありません。彼は彼のプログラムを再開するためにwhileループを持っていた。彼はただ単に再起動するだけではない。 –

+0

@leafこれは「あなたがyかnか」と尋ねられたことを印刷しません。これは私が彼が望んだと思っていたものです。 –

+0

多分私はあなたを誤解します。これは実用的なコードの意味ですか?そうでない場合、私は謝罪し、誤っていくつかの偽の結論に飛びついた可能性があります。 –

0

while: truebreakを使用してy/nの質問を制御し、小文字のみを取得する場合はlower()を使用することを忘れないでください。

restart = 'y' 
while (True): 
    # other code goes here 
    restart = raw_input("would you like restart the programme y/n?").lower() 
    if (restart == 'n'): 
     print ("programme terminated") 
     break 
    elif (restart == 'y'): 
     pass 
    else: 
     print "Please enter y or n" 
0

これは、if/else文が構造化されているためです。 yと入力すると、if文でnが失敗します。これは、あなたのelseステートメントがすぐに実行されることを意味します。しかし、あなたのelseステートメントが実行された後、制御フローはあなたのwhileループから次の繰り返しにループし、あなたのプログラムはまだ再開します。

何が最も可能性が高いたいことは制御の流れがループがあなたのwhileループの次の繰り返しにしませんが、それを終了しますので、あなたのelse文の下にbreakステートメントを追加することです:

else: 
    print("you were asked y or n") 
    break # <---------- add a break statement under your else 
関連する問題