【问题标题】:While Loops Python- No error why?While Loops Python - 为什么没有错误?
【发布时间】:2015-10-06 04:33:01
【问题描述】:

为什么下面的代码没有报错?

while 7:
    print ("Hi")

相反,它会永远打印“Hi”。

【问题讨论】:

  • 嗯,7 是真实的,所以它应该永远打印 ("Hi")。
  • 为什么你认为它应该抛出错误?我的电脑上有一个不错的小程序,它永远打印“y”,it comes in handy sometimes
  • 计算机出现问题时每次都不会产生错误。与其他更严格的语言相比,尤其是 Python 将允许您做更多的事情,因为 Python 期望您知道自己在做什么。我自己也经常使用while True

标签: python while-loop


【解决方案1】:

因为表达式7 在布尔上下文中被认为是真的(如while 测试)。

所有非零数字在布尔上下文中都是真的。非空字符串、非空列表、元组或字典也是如此。

基本上,任何非空、非NoneFalse 且非数字零的值都被视为真值。见Truth Value Testing

【讨论】:

    【解决方案2】:

    任何非零都被解释为 True,因此 while(7) 与 while(1) 同义,后者是一个无限循环

    【讨论】:

    • @RobFoley 这完全不正确。 bool(-1)True
    • @RobFoley:不,-1 被认为是真的。请参阅我在答案中链接到的文档。
    • 我也是这么想的,但我只是在 Python 3.4 的控制台中做了 -1 == True 并且它返回了 false。 1== 真返回真。也许我忽略了什么?
    • 你在比较整数,而不是整数的真实性。
    • 是的,正如我所说的,我意识到了。
    【解决方案3】:

    虽然循环只采用TrueFalse 条件,例如:

    While 1:
        print("hi")
    

    因为 1 被认为是 True,所以循环变为无限

    如果你想让程序print("hi") 7 次你需要一个for 循环:

    他们是这样工作的:

    for i in range(7):
        print("hi")
    

    i 只是一个变量,range(7) 只是你想要循环的次数

    【讨论】:

      猜你喜欢
      • 2016-09-13
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 2016-10-11
      • 2022-12-10
      相关资源
      最近更新 更多