繁体   English   中英

打破一个while循环

[英]Breaking out of a while loop

我是 python 和编程的新手,并且难以摆脱调用几个函数的 while 循环。 我尝试了各种不同的选项,但它们都以相同的方式结束,它们并没有结束它只是继续运行。 我只是在这里,因为我已经研究并尝试了很长时间来解决这个问题。 下面是一些您可以看到可能与 function 混淆的代码。 我不会只发布最后一部分的完整程序。 感谢您在我学习期间提供的任何帮助。 这也是我第一次发帖,过去一年我一直在使用stackoverflow。

def main():
        choice = input('''Hello,
Would you like to do basic math or return an average?
Please select 1 for basic math and 2 for average and 3 to quit:

''')
        if choice == '1':
            print(performCalculation())

        elif choice == '2':
            print(calculateAverage())

        elif choice == '3':
            print(main())

j = 0
k = 0
while j < 3:
    print(main())
    while k == 3:
        break
print('All Done!')

简单地改变

j = 0
k = 0
while j < 3:
    print(main())
    while k == 3:
        break
print('All Done!')

j = 0

while j < 3:
    print(main())
    j += 1
    
print('All Done!')

你的 while 循环永远不会中断的原因是因为你有while j < 3: ,但你永远不会改变j的值,所以如果它一开始就更小,它就会永远更小。

此外, k永远不会等于3即使它会,while循环中的break语句只会使while 循环终止,而不是主循环。

您在这里有几个基本错误。 我将按照您的程序执行顺序为 go。

您没有增加循环变量。

您已经开始循环变量,其中jk (为什么不ij ?)设置为零,并根据这些变量的值循环。 由于它们永远不会递增,因此您的循环永远不会遇到退出条件。

您可以在相应循环结束时使用j += 1k += 1递增变量。

你的循环是“unpythonic”

这些通常会写成我下面的例子。 您不需要单独声明i或在此处增加它。 Python 为您处理。

for i in range(0, 3):
    ...

您正在打印不返回任何内容的 function。

您的主要 function 没有返回值,因此调用print(main())是无稽之谈。 您可以简单地用main()替换它,除非您将main()更改为具有某种return "foo"语句。

暂无
暂无

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

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