我需要在程序中创建一个'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”。
答案 0 :(得分:2)
这是因为如果else
包含与'n'不同的内容,则该程序将遵循restart
。 (y或任何其他值)。如果按'y',它将跟随else
语句,然后while的条件也将评估为true
。您可以使用elif restart != 'y'
作为快速解决方案,其中发布了print语句。然后,您可以将restart
设置为y
,以便循环重复,或者为循环使用不同的变量。
答案 1 :(得分:0)
使用while: true
和break
来控制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")
也许这就是你想要的?