如何用 Python 编写'not equal'以获得两个答案?



我需要在我的程序中做一个'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"。

这是因为如果restart包含与'n'不同的东西,程序将遵循else。(y或任何其他值)。如果您按下'y',它将跟随else语句,然后while的条件也将计算为true。您可以使用elif restart != 'y'作为快速解决方案,在这里发出print语句。然后,您可以将restart设置为y,以便循环重复,或者为整个循环使用不同的变量。

这是因为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

使用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"

最新更新