python字符串和整数比较

时间:2014-02-24 17:55:39

标签: python python-2.7

我想打印所有数字,直到使用while循环给定用户输入。示例:输入:5 ==> 1 2 3 4 5但是下面的程序永远循环。

user = str(input("Enter : "))
i = 1
while i < user:
    print(i)
    i = i + 1

4 个答案:

答案 0 :(得分:4)

while i < int(user):

答案 1 :(得分:1)

请改为尝试:

try:
    user = int(raw_input('Enter: '))  # Cannot compare a string with an integer.
except ValueError:
    print('Input should be an integer!')

i = 1
while True:
    i += 1
    if i > user:
        break
    print(i)

注意:在您的代码中,即使我们明确地将input声明为整数,它仍然不会按照您希望的方式运行。这是因为在您的代码中,while循环在i等于user时停止(因为条件是而小于... ,因此不会打印出最终值user。因此我对其进行了修改,使其在i大于user时断开,这意味着最后打印的值将等于{{1 }}

上一个输出示例user

user = 5

使用新代码:

1
2
3
4

如果你没有使用1 2 3 4 5 循环,那么最好在这里使用for循环:

while

答案 2 :(得分:0)

Python 2.x中的

input将尝试评估用户输入的内容,它等同于

user = eval(raw_input(...))

在这种情况下,您将显式转换提供给字符串的任何内容(使用str())。在Python 2.x中,字符串总是比数字大,因此i < user 总是True

使用raw_input并转换为int更明智。您还可以使用for循环简化代码:

user = int(raw_input("Enter : "))

for i in range(user):

    print(i)

答案 3 :(得分:0)

您正在将int与str进行比较,这就是您获得无限循环的原因。您应该比较相同类型的变量

user = int(input("Enter: "))

应该有效