>>> a=str(input('Voer een door spatie gescheiden lijst met getallen in: ').split())
正在创建列表的文本表示形式,因为您使用了返回python对象文本表示形式的str内置项:
^{pr2}$
上面不是int所要求的数字的文本表示,而是列表的文本表示,因此当您将它传递给int时,它会抱怨
ValueError: invalid literal for int() with base 10: "['2', '3', '4', '5']"
如果我们省略对str的调用呢?在
>>> a = input('Voer een door spatie gescheiden lijst met getallen in: ').split()
>>> a
['2', '3', '4', '5']
>>> int(a)
TypeError: int() argument must be a string or a number, not 'list'
inp = input('Voer een door spatie gescheiden lijst met getallen in:').split())
a,b = map(int,inp)
这假设用户总是输入两个用空格隔开的数字。在
更安全地使用while循环和try/except:
^{pr2}$
如果输入了未知数量的整数:
while True:
try:
inp = input('Voer een door spatie gescheiden lijst met getallen in:').split()
nums = map(int, inp)
break
except ValueError:
print("Invalid input")
for num in nums:
print(num)
使用python3,map返回一个map对象,因此这是一种有效的赋值方法。 [int(x) for x in inp]也可以,但除非您需要一个列表,否则没有必要创建一个列表。在
冗长的回答
对这个问题来说,^{} builtin (跟随链接了解整个故事)需要一个单独的参数,可以是数字文本,也可以是字符串。在
你的代码
正在创建列表的文本表示形式,因为您使用了返回python对象文本表示形式的
^{pr2}$str
内置项:上面不是
int
所要求的数字的文本表示,而是列表的文本表示,因此当您将它传递给int
时,它会抱怨如果我们省略对
str
的调用呢?在注意,错误消息是不同的:不再是
ValueError
,而是TypeError
。我们有一个列表,它的项是表示数字的字符串,但是我们不允许使用list作为int
的参数。在输入list comprehension,这是一个当代的习惯用法,可以操作列表(或通用的iterable)的内容。在
语法很简单,
[...]
你有左括号和右括号,就像你在使用列表文本时所写的那样,在里面有一个由内而外的循环,首先是循环的主体,然后是for
规范。体的求值结果按顺序存储在解释器为您输出的列表中,正如您在上面看到的,我们没有更多的字符串表示数字而是整数。将列表理解的结果赋给变量你完成了:
在
split
之后,您有一个list
的str
,因此您需要将每个单独的项转换为int
。在你可以用列表理解
或使用
^{pr2}$map
您正在尝试转换列表的字符串表示形式,只需将内容拆分为一个列表并使用map转换为int:
这假设用户总是输入两个用空格隔开的数字。在
更安全地使用while循环和try/except:
^{pr2}$如果输入了未知数量的整数:
使用
python3
,map返回一个map对象,因此这是一种有效的赋值方法。[int(x) for x in inp]
也可以,但除非您需要一个列表,否则没有必要创建一个列表。在相关问题 更多 >
编程相关推荐