Python - 忽略重新启动while循环

时间:2015-10-05 21:24:38

标签: python

我正在我大学的入门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)

1 个答案:

答案 0 :(得分:1)

这不是while循环的工作方式。一旦身体状况变得虚假,他们就不会戒烟;条件仅在块的末尾进行评估,此时它决定是再次循环(如果条件仍然成立)或中断(如果它没有)。

在这种情况下,最简单的方法是明确使用break语句:

finished = input("Would you like another set of symptoms? ").lower()
if finished == 'y':
    break