如何在python 3中结束while循环

时间:2015-03-05 18:14:48

标签: python-3.x

所以我正在使用模运算来确定在“x”天的时间。我曾尝试使用break命令来结束while循环,但是当我这样做时会打印出所有循环的答案。这是我的一个循环的代码

while (x) == ('Monday') or ('monday'):
    if round_4 == ".1":
        print ("It will be Tuesday")
    elif round_4 == ".2":
        print ("It will be Wednesday")
    elif round_4 == ".3":
        print ("It will be Thursday")
    elif round_4 == ".4":
        print ("It will be Friday")
    elif round_4 == ".5":
        print ("It will be Saturday")
    elif round_4 == ".6":
        print ("It will be Sunday")
    elif round_4 == ".7":
        print ("It will be Monday")
    elif round_4 == ".8":
        print ("It will be Tuesday")
    elif round_4 == ".9":
        print ("It will be Wednesday")
    elif round_4 == ".0":
        print ("It will be Monday AGAIN")
    else:
        print ("Sorry, there has been a tecnical difficulty! Please try again!")

如果round_4说“.2”,它会打印所有while循环的“.2”elif。 对不起,我有点像蟒蛇一样!

2 个答案:

答案 0 :(得分:1)

  

所以我正在使用模运算来计算出它将会是什么日子" x"天数。

不,你不是。 Python在模数运算符%

中内置了对模运算的支持
>>> 29 % 7
1

您不需要循环或递归来解决此问题。

假设你有一个整数变量today(周一零,一个星期二等),这是非常简单的数学:

return (today+x) % 7

然后,您可以使用词典在日期名称和数字之间进行转换。

答案 1 :(得分:0)

撇开这个循环是否是解决更大问题的好方法,当前while循环没有结束的一个原因是因为你搞砸了这个条件。表达式(x) == ('Monday') or ('monday')始终为true,因为==运算符未分布在or上。它相当于(x == 'Monday') or 'monday',并且由于任何非空字符串都是真实的,因此始终满足条件。

编写表达式的更正确的方法是x == 'Monday' or x == 'monday',或者x in ['Monday', 'monday']

但是,我建议在lower字符串上使用upperx方法并仅测试一个案例(这将允许任何形式的大小写):{{1 }}

另一个问题,指出Elizon的评论,是你永远不会在循环中改变x.lower() == 'monday'的值,所以如果条件在开始时为真,它将永远保持为真。如果您只希望此代码最多运行一次,则可能需要x而不是if