繁体   English   中英

Python,而While循环无法正常运行

[英]Python, While Loop Not Functioning Properly

当首先为“您想继续”问题输入“否”时,while循环正确停止。 当在“是”之后或在多个“是”条目之后输入“否”时,则用户必须回答“否”,因为在此之前有许多“是”条目:例如,“是”,“是”,“否”在第一个“否”答案之后产生两个“您想继续”问题。

我刚刚开始学习Python,因此任何建议都会有所帮助。

谢谢。

def testing3():
    def Grade(score):
        if score >= 90:
            letter = "A"
        elif score >= 80:
            letter = "B"
        elif score >= 70:
            letter = "C"
        elif score >= 60:
            letter = "D"
        else:
            letter = "F"
        print(letter) 

    def main():
        x = input("Enter Numerical Grade: ")
        numGrade = int(x)
        Grade(numGrade)

    main()

    def main2():
        while True:
            test = input("Would you like to continue?: ")
            if test == 'Yes':
                testing3()
            else:
                print("Done")
                break

    main2()

testing3()

您的testing3调用会调用内部的main2 def,但是main2会调用testing3 def,因此您在两者之间进行了ping-poning。

为了了解这一点,您应该查看堆栈框架,并看到一个用于test3的框架,然后是testing2,然后是testing3,依次类推,以了解您输入了yes的次数。

无论您是否打算(我认为您没有这样做),您都创建了一个递归函数。 因此,您不必多次输入的原因是在展开时(将帧弹出堆栈)

while循环的正确使用应如下所示:

finish = False
while not finish:
  # do your stuff here
  finish = evaluateLoopFinish()

在此,终点是一个信号标志,您必须在每个回合结束时对其进行评估。 第一次设置为False,因此不设置False == True,因此进入循环。

另一个提示:只能使用一个这样的主体

def main(args):
  # do your stuff here

if __name__=="__main__":
  main()

每个Python脚本都有一个名称特殊变量,该变量保存模块的名称, 要执行的Python脚本收到的特殊值main 除外

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM