【问题标题】:Infinite while loop in pythonpython中的无限while循环
【发布时间】:2012-08-28 23:45:12
【问题描述】:

无论我做什么,我都无法让这个 while 循环工作;除非我对值进行硬编码。

count = 0
value = raw_input('How many?')
print value
while (count <= value):
        print "a"
        count= count + 1

起初我尝试使用命令行参数,使用 sys.argv[1] 作为值,但我遇到了同样的问题。这看起来很简单,但我一生都无法弄清楚我做错了什么。

【问题讨论】:

  • 尝试检查 - 你的价值是什么类型?你的 count 变量是什么类型的?
  • 在修复了别人提到的数据类型问题之后,有一种稍微简洁和pythonic的方式来编写循环:for i in xrange(value): print "a"。

标签: python while-loop infinite-loop


【解决方案1】:

顺便说一句,如果你真的想让你的声明成为 value 次打印的更改条件

count <= int(value)

count < int(value)

或从 1 开始 count

【讨论】:

    【解决方案2】:

    确保值是整数,

    while (count <= int(value)):
        count= count + 1
    

    默认情况下raw_input 是一个字符串,对于每个整数n 和每个字符串s 我们都有n&lt;s is True (!),因此你的循环(没有int)永远不会中断。

    注意:在 Python 3 中,比较字符串和整数会得到 TypeError: unorderable types: str() &lt; int(),这可能是更“预期”的行为。

    【讨论】:

    • 谢谢。我什至没有考虑过。
    • 另外请注意,这现在在 Python 3 中表现得更好一些 - '5'
    【解决方案3】:

    先将输入转换为整数

    value = int(raw_input('How many?'))
    print value
    

    【讨论】:

    • ...但不要忘记try->catch 可能的ValueErrorException,如果输入不是数字表示,则可以引发!
    猜你喜欢
    • 2017-10-12
    • 2020-11-30
    • 2015-05-22
    • 2018-08-30
    • 2014-03-29
    • 2012-12-24
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多