Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,而循环运行不正常_Python_While Loop - Fatal编程技术网

Python,而循环运行不正常

Python,而循环运行不正常,python,while-loop,Python,While Loop,如果首先为“是否继续”问题输入“否”,则while循环将正确停止。如果在“是”之后或在多个“是”条目之后输入“否”,则用户必须回答“否”,因为前面有多少个“是”条目:例如,“是”、“是”、“否”将在第一个“否”答案之后生成两个“是否要继续”问题 我刚刚开始学习Python,所以任何建议都会很有帮助 多谢各位 def testing3(): def Grade(score): if score >= 90: letter = "A"

如果首先为“是否继续”问题输入“否”,则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,因此您在两者之间进行乒乓

要了解这一点,您应该查看堆栈帧,您应该看到一个用于testing3的帧,然后是testing2,然后是testing3,等等您输入yes的次数


不管你是不是有意的,我认为你没有。你创建了一个递归函数。因此,您必须多次输入no的原因是,当您从堆栈中展开弹出帧时,while循环的正确使用应该如下所示:

finish = False
while not finish:
  # do your stuff here
  finish = evaluateLoopFinish()
在这里,终点是一个信号标志,您必须在每个转弯结束时对其进行评估。第一次设置为False,因此not False==True,因此进入循环

另一个提示:像这样只使用一个主管道

def main(args):
  # do your stuff here

if __name__=="__main__":
  main()

每个Python脚本都有一个名为special的变量,该变量保存模块的名称,但给Python执行的脚本除外,该脚本接收特殊值main。

您能检查缩进吗?我相信main2应该比现在低一级。谢谢你的回答。我返回并将def main2置于def testing3之外,这立即纠正了我的问题。