python字符串和整数比较
我想使用while循环打印所有数字,直到给定的用户输入为止。示例:输入:5==>1 2 3 4 5,但下面的程序将永远循环python字符串和整数比较,python,python-2.7,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 user=str(输入(“输入:”) i=1 而我认为用户: 印刷品(一) i=i+1 ummm而我
user = str(input("Enter : "))
i = 1
while i < user:
print(i)
i = i + 1
user=str(输入(“输入:”)
i=1
而我认为用户:
印刷品(一)
i=i+1
ummm而我
?试试这个:
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)
注意:在您的代码中,即使我们将输入显式声明为整数,它仍然不会按照您希望的方式工作。这是因为在代码中,while
循环停止一次i
等于user
(由于条件为while小于…,因此不会打印出最终值,user
。因此,我对其进行了修改,使其在I
大于user
时中断,这意味着最后打印的值将等于user
上一个输出示例,其中user=5
:
1
2
3
4
使用新代码:
1
2
3
4
5
但是,如果未设置在使用while
循环时,最好在此处使用for
循环:
for i in range(1, user+1):
print(i)
user = int(raw_input("Enter : "))
for i in range(user):
print(i)
在Python2.x中,将尝试评估用户输入的内容,这相当于
user = eval(raw_input(...))
在本例中,您将显式地将提供的任何内容转换为字符串(使用str()
)。在Python2.x中,字符串的比较总是大于数字,因此i
总是True
更明智的做法是使用并转换为int
。您还可以使用for
循环简化代码:
for i in range(1, user+1):
print(i)
user = int(raw_input("Enter : "))
for i in range(user):
print(i)
您正在比较int和str,这就是为什么会得到一个无限循环。您应该比较相同类型的变量
user=int(输入(“回车”)
应该可以工作最好执行user=int(输入(“回车”)
instead@lejlot:在Python 2中,使用int(原始输入(“回车”)
。input()
已经调用了eval()
在输入上,因此在任何情况下,对于只包含数字的输入,它都将返回一个整数。我只是指这样一个事实,即最好将用户转换为int一次,而不是在循环中。只是为了确保,应该有一个try-except-ValueError,以便正确检查输入。meh这一切都超出了OP的范围stion imho…(尽管有很好的建议)…关于这一点有几点值得怀疑(例如,如果他想要一个字符串,为什么他要使用input
而不是raw_input
,如果他想要int
为什么他要显式地强制转换到str
,etcin python2.7 input会返回字符串的计算版本(在本例中是int…),我猜OP有理由将其转换为字符串。。。(尽管不知道那可能是什么)