0

我正在制作一个程序,只要数字低于 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 进行比较。请帮忙。提前致谢。

4

3 回答 3

2

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

例如

if int(that) < var:

这会将字符串转换that整数(数字)。将其转换为整数的好处是您可以将其与其他整数进行比较,并使用基本的算术运算。如果您使用字符串,那将是不可能的。

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

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

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

于 2013-04-11T01:28:55.123 回答
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]
于 2013-04-11T01:42:46.743 回答
0

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

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

要删除 < 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]
于 2013-04-15T18:22:25.390 回答