2014-02-24 100 views
-1

我想打印所有的数字,直到给定的用户输入使用while循环。例如:输入:5 ==> 1 2 3 4 5但下面的程序永远循环。python字符串和整数比较

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

回答

4

ummm while i < int(user):

+5

倒不如做'用户= INT(输入( “输入:”))'代替 – lejlot

+0

@lejlot:在Python 2 ,使用'int(raw_input(“Enter:”))'代替。 'input()'已经在输入中调用了'eval()',所以在任何情况下它都会返回一个只包含数字的输入的整数。 –

+0

我只是提到这样一个事实,即将用户转换为int一次比在循环中更好。 – lejlot

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更大,这意味着最后打印值将等于user

实施例前面的输出,其中user = 5

1 
2 
3 
4 

,并用新的代码:

然而
1 
2 
3 
4 
5 

这是更好地在这里使用一个for循环,如果你不使用while循环设置:

for i in range(1, user+1): 
    print(i) 
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) 
0

你是比较一个int的STR,这就是为什么你得到一个无限循环。你应该比较同类型的变量

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

应该工作

+0

.7输入为你提供了一个评估版本的字符串(在这种情况下是一个int ...),,,我猜测OP有一些理由把它转换成一个字符串......(尽管不知道可能是什么) –