如何在python中写出“不相等”的两个答案?

时间:2016-11-12 14:16:51

标签: python loops while-loop

我需要在程序中创建一个'while'循环,但无法正确完成它。以下是我到目前为止:

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”。

4 个答案:

答案 0 :(得分:2)

这是因为如果else包含与'n'不同的内容,则该程序将遵循restart。 (y或任何其他值)。如果按'y',它将跟随else语句,然后while的条件也将评估为true。您可以使用elif restart != 'y'作为快速解决方案,其中发布了print语句。然后,您可以将restart设置为y,以便循环重复,或者为循环使用不同的变量。

答案 1 :(得分: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"

答案 2 :(得分:0)

这是因为你的if / else语句的结构方式。当您输入y时,n会在您的if语句中失败。这意味着您的else语句会立即执行。但是在执行了else语句之后,控制流会循环到while循环中的下一次迭代,并且程序仍然会重新启动。

你最想要的是在你的else语句下添加一个break语句,这样控制流就不会循环到你的while循环的下一次迭代,而是退出它:

else:
    print("you were asked y or n")
    break # <---------- add a break statement under your else

答案 3 :(得分:-1)

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

也许这就是你想要的?