python 字符串输入到整数的转换
python string input to integer conversion
我需要创建一个脚本来要求用户输入一个包含由 space 分隔的整数的字符串。然后我需要将字符串转换为整数。
关于从哪里开始的任何指示?这是我试过的:
a=str(input('Voer een door spatie gescheiden lijst met getallen in:').split())
b=int(a)
print(b)
但我不断收到:
ValueError: invalid literal for int() with base 10: "['50', '60']"
您正在尝试转换列表的字符串表示形式,只需将内容拆分为列表并使用 map 转换为整数:
inp = input('Voer een door spatie gescheiden lijst met getallen in:').split())
a,b = map(int,inp)
这假定用户总是输入由 space 分隔的两个数字。
使用 while 循环和 try/except:
更安全
while True:
try:
inp = input('Voer een door spatie gescheiden lijst met getallen in:').split()
a, b = map(int, inp)
break
except ValueError:
print("Invalid input")
print(a,b)
如果您输入了未知数量的整数:
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
,映射 returns 一个映射对象,因此这是一种有效的分配方式。
[int(x) for x in inp]
也可以,但除非您需要一个列表,否则创建一个列表毫无意义。
在 split
之后您有一个 list
的 str
,因此您需要将每个单独的项目转换为 int
。
您可以使用列表理解
b = [int(i) for i in a]
或使用map
b = list(map(int, a))
您需要使用以下方式将列表的每个元素转换为 int,
a = [int(each) for each in a]
这将为您提供可在程序中使用的整数列表。如果它是一个无效的整数,那么你可以使用 try-except
,
b = []
for each in a:
try:
b.append(int(each))
except ValueError:
print('Invalid number')
冗长的回答
过度简化问题,int
builtin(跟随link了解整个故事)需要一个参数,数字文字或字符串。
您的代码
>>> a=str(input('Voer een door spatie gescheiden lijst met getallen in: ').split())
正在创建列表的文本表示,因为您使用 str
内置函数 returns python object:[=28= 的文本表示]
>>> a
"['2', '3', '4', '5']"
上面不是 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'
请注意,错误消息是不同的:不再是 ValueError
,而是 TypeError
。我们有一个列表,其项目是表示数字的字符串,但我们不允许按原样使用列表 作为 int
.
的参数
输入 list comprehension,用于操作列表(或通用 iterable 的 contents ).
>>> [int(elt) for elt in a]
[2, 3, 4, 5]
语法很简单,[...]
你有左括号和右括号,就像你在使用列表文字时写的那样,里面有一个 inside-out 循环,首先是 body 循环,然后是 for
规范。 body 的计算结果顺序存储在一个列表中,解释器为您输出,正如您在上面看到的,我们没有更多的字符串表示数字而是整数。将列表理解的结果分配给变量
>>> b = [int(elt) for elt in a]
大功告成:
>>> print(b)
[2, 3, 4, 5]
>>>
我需要创建一个脚本来要求用户输入一个包含由 space 分隔的整数的字符串。然后我需要将字符串转换为整数。
关于从哪里开始的任何指示?这是我试过的:
a=str(input('Voer een door spatie gescheiden lijst met getallen in:').split())
b=int(a)
print(b)
但我不断收到:
ValueError: invalid literal for int() with base 10: "['50', '60']"
您正在尝试转换列表的字符串表示形式,只需将内容拆分为列表并使用 map 转换为整数:
inp = input('Voer een door spatie gescheiden lijst met getallen in:').split())
a,b = map(int,inp)
这假定用户总是输入由 space 分隔的两个数字。
使用 while 循环和 try/except:
更安全while True:
try:
inp = input('Voer een door spatie gescheiden lijst met getallen in:').split()
a, b = map(int, inp)
break
except ValueError:
print("Invalid input")
print(a,b)
如果您输入了未知数量的整数:
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
,映射 returns 一个映射对象,因此这是一种有效的分配方式。
[int(x) for x in inp]
也可以,但除非您需要一个列表,否则创建一个列表毫无意义。
在 split
之后您有一个 list
的 str
,因此您需要将每个单独的项目转换为 int
。
您可以使用列表理解
b = [int(i) for i in a]
或使用map
b = list(map(int, a))
您需要使用以下方式将列表的每个元素转换为 int,
a = [int(each) for each in a]
这将为您提供可在程序中使用的整数列表。如果它是一个无效的整数,那么你可以使用 try-except
,
b = []
for each in a:
try:
b.append(int(each))
except ValueError:
print('Invalid number')
冗长的回答
过度简化问题,int
builtin(跟随link了解整个故事)需要一个参数,数字文字或字符串。
您的代码
>>> a=str(input('Voer een door spatie gescheiden lijst met getallen in: ').split())
正在创建列表的文本表示,因为您使用 str
内置函数 returns python object:[=28= 的文本表示]
>>> a
"['2', '3', '4', '5']"
上面不是 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'
请注意,错误消息是不同的:不再是 ValueError
,而是 TypeError
。我们有一个列表,其项目是表示数字的字符串,但我们不允许按原样使用列表 作为 int
.
输入 list comprehension,用于操作列表(或通用 iterable 的 contents ).
>>> [int(elt) for elt in a]
[2, 3, 4, 5]
语法很简单,[...]
你有左括号和右括号,就像你在使用列表文字时写的那样,里面有一个 inside-out 循环,首先是 body 循环,然后是 for
规范。 body 的计算结果顺序存储在一个列表中,解释器为您输出,正如您在上面看到的,我们没有更多的字符串表示数字而是整数。将列表理解的结果分配给变量
>>> b = [int(elt) for elt in a]
大功告成:
>>> print(b)
[2, 3, 4, 5]
>>>