我正在尝试将输入的数字添加到列表中。
box = [int(x) for x in input("Type numbers here: ").split()]
box.sort(reverse=False)
print(box)
只要有任何特殊字符,此代码就会出现 ValueError 。这意味着您需要输入数字,数字之间要有空格,如果有逗号则不起作用。它不允许浮点数。我将类型更改为 float 以允许 2,5 等数字并尝试使用
re.sub()
但它不起作用。
如果你真的想使用逗号而不是点来表示浮点,请执行以下操作
box = [float(x.replace(',','.')) for x in input("Type numbers here: ").split()]
box.sort(reverse=False)
print(box)
替换函数将 , 更改为 .
您知道,即使我们输入数字,输入也被视为字符串。这就是为什么您将其转换为 int 以创建列表(如
box = [int(x) for x in input("Type numbers here: ").split()]
)。
所以无法转换成整数的字符自然会产生数值错误。如果您想在代码中提供混合类型的数据,则必须根据您的要求在编码中预处理输入。例如,如果您需要在后续步骤中使用一些特殊字符,您可以创建另一个包含特殊字符的列表;以及一份包含数字的列表。
几个例子:
如果输入的是用逗号分隔的数字,
numbers = input("Type numbers here: ")
numbers = numbers.split(',')
numbers = [int(x) for x in numbers]
如果您想使用以空格分隔的浮点数,其余字符将在稍后阶段使用
numbers = input("Type numbers here: ")
numbers = numbers.split(' ')
ints = [float(x) for x in numbers if x.replace('.','').isdigit()]
char = [x for x in numbers if not x.replace('.','').isdigit()]
等等。