python字符串输入到整数的转换

2024-10-01 09:23:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个脚本来要求用户输入一个包含由空格分隔的整数的字符串。然后我需要把字符串转换成整数。在

有什么建议吗?这就是我尝试过的:

a=str(input('Voer een door spatie gescheiden lijst met getallen in:').split())
b=int(a)
print(b)

但我一直得到:

^{pr2}$

Tags: 字符串用户脚本input整数建议空格met
3条回答

冗长的回答

对这个问题来说,^{} builtin(跟随链接了解整个故事)需要一个单独的参数,可以是数字文本,也可以是字符串。在

你的代码

>>> 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'

注意,错误消息是不同的:不再是ValueError,而是TypeError。我们有一个列表,它的项是表示数字的字符串,但是我们不允许使用list作为int的参数。在

输入list comprehension,这是一个当代的习惯用法,可以操作列表(或通用的iterable)的内容。在

>>> [int(elt) for elt in a]
[2, 3, 4, 5]

语法很简单,[...]你有左括号和右括号,就像你在使用列表文本时所写的那样,在里面有一个由内而外的循环,首先是循环的主体,然后是for规范。体的求值结果按顺序存储在解释器为您输出的列表中,正如您在上面看到的,我们没有更多的字符串表示数字而是整数。将列表理解的结果赋给变量

>>> b = [int(elt) for elt in a]

你完成了:

>>> print(b)
[2, 3, 4, 5]
>>> 

split之后,您有一个liststr,因此您需要将每个单独的项转换为int。在

你可以用列表理解

b = [int(i) for i in a]

或使用map

^{pr2}$

您正在尝试转换列表的字符串表示形式,只需将内容拆分为一个列表并使用map转换为int:

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]也可以,但除非您需要一个列表,否则没有必要创建一个列表。在

相关问题 更多 >