我正在我大学的入门csci课程中编写一个程序,这是对用户症状的微型诊断。除了一件事之外,一切都正常工作:如果使程序运行的初始条件(无论用户是否发烧)是“否”或“n”,程序将不会重新启动重新定义使while循环运行的变量。
相反,程序在收到用户输入是否重新启动程序而不是重新启动while循环后继续。这会产生问题,因为程序进入下一行代码并到达未定义的变量。
这只发生在第一个if,else语句中,并且在后续语句中没有问题。它只发生第一次重新定义了while循环变量。在其他任何时候,它都有效。
即使第一个“else”重新定义了“finished”,它应该使while循环重新启动,但它不会重新启动。但是,对于用户重新定义“完成”的每个后续时间,while循环 重新启动。奇。缩进错误?我不知道。双星号是while循环需要重新启动的地方,但不是。无论用户输入如何,它都会继续尝试继续,并且出现错误,说“cough”未定义,表示while循环没有重新启动。
这是我的代码:
#Proj2.py
finished = "y"
while finished == "y":
print()
print("Fever Diagnostic Tool")
print("---------------------")
print()
print("Please note that this program performs no true diagnostic \nactivity. No decisions should be made based upon the tool's \nanalysis. If users have a fever, they should contact their \ndoctor.")
print()
print()
FirstDiagnosis = str(input("Do you have a fever (y/n): ")).lower()
print(FirstDiagnosis)
if FirstDiagnosis == "y":
cough = ""
cough = str(input("Are you coughing (y/n): ")).lower()
print(cough)
else:
print()
print("Symptoms")
print("* None")
print()
print("Diagnosis")
print(" Insufficient information to list possibilites.")
print()
print()
**finished = str(input("Would you like another set of symptoms? ")).lower()**
print()
if cough == "y":
ShortOfBreath = ""
ShortOfBreath = str(input("Are you short of breath or wheezing or coughing up phlem (y/n): ")).lower()
print(ShortOfBreath)
答案 0 :(得分:1)
这不是while循环的工作方式。一旦身体状况变得虚假,他们就不会戒烟;条件仅在块的末尾进行评估,此时它决定是再次循环(如果条件仍然成立)或中断(如果它没有)。
在这种情况下,最简单的方法是明确使用break
语句:
finished = input("Would you like another set of symptoms? ").lower()
if finished == 'y':
break