我想打印所有数字,直到使用while循环给定用户输入。示例:输入:5 ==> 1 2 3 4 5但是下面的程序永远循环。
user = str(input("Enter : "))
i = 1
while i < user:
print(i)
i = i + 1
答案 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)
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: "))
应该有效