如何将整数列表转换为整数?

时间:2013-04-11 01:26:26

标签: python

我正在制作一个程序,只要数字低于300,就可以从最低到最高对数字进行排序,但我无法弄清楚如何将用户输入更改为列表。这是我的代码:

List1=[]
List2=[]
var=1
thing=input("Insert numbers here")
List1.append(thing)
while var < 300:
    for that in List1:
        if that < var:
            List2.append(number)
    var = var + 1
print(List2)

当我运行代码时,它表示在第8行中,字符串无法与int进行比较。 请帮忙。提前谢谢。

3 个答案:

答案 0 :(得分:2)

看起来您的变量that是一个字符串。这就是为什么你不能将它与整数进行比较的原因。如果您需要将字符串转换为int,则可以使用int(your_variable_here)将其换行。

例如

if int(that) < var:

这会将字符串that转换为integers(数字)。将其转换为整数的好处是您可以将其与其他整数进行比较,并使用基本arithmetic operations。如果您使用字符串,那将无法实现。

更好的解决方案是将输入直接存储为整数。

List1.append(int(thing)) # We wrap the keyboard input with int

此外,如果您运行的是Python 2.x,我建议您使用raw_input,而不是input

答案 1 :(得分:0)

由于这似乎没有在任何循环中,我看不出你如何在列表中有多个条目..也许你可以输入空格分隔数字?使用 python 3 ,可以将其最小化(减去错误处理):

nums = [x for x in list(map(int, input("Enter numbers: ").split())) if x < 300]    
nums.sort()

或..

nums = input("Enter numbers: ") # Get the number string
nums = nums.split() # Split the string by space character
nums = list(map(int, nums)) # call int() on each item in the list, converting to int
nums.sort() # sort the list of numbers
nums = [x for x in nums if x < 300] # remove any numbers 300 or over.

输入/输出:

Enter numbers: 1 5 301 3000 2
[1, 2, 5]

答案 2 :(得分:0)

如果输入以逗号分隔的数字,则以下单行将起作用:

>>> sorted(list(input("Enter numbers: ")), reverse=True)
Enter numbers: 1, 2, 3
[3, 2, 1]

删除数字&lt; 300:

>>> sorted([num for num in input("Enter numbers: ") if num < 300], reverse=True)
Enter numbers: 1, 301, 299, 300, 2, 3
[299, 3, 2, 1]