如何将用户输入生成的字符串转换为列表或整数?

时间:2017-09-03 19:16:02

标签: python string

我需要创建一个计算两个坐标之间距离的脚本。我遇到的问题是,当我将坐标分配给对象1时,它存储为字符串,无法将其转换为列表或整数/浮点数。如何将其转换为列表或整数/浮点数?我得到的脚本和错误如下。

脚本:

one=input("Enter an x,y coordinate.")
Enter an x,y coordinate. 1,7

int(1,7)

Traceback (most recent call last):

  File "<ipython-input-76-67de81c91c02>", line 1, in <module>
    int(1,7)
  TypeError: int() can't convert non-string with explicit base

3 个答案:

答案 0 :(得分:2)

首先必须将输入的字符串转换为int / float,方法是首先将字符串拆分为点组件,然后转换为适当的类型:

x, y = map(float, one.split(','))

要将输入的值保留为一个名为Point的自定义数据类型,您可以使用namedtuple

from collections import namedtuple

Point = namedtuple('Point', 'x, y')

演示:

>>> from collections import namedtuple
>>> Point = namedtuple('Point', 'x, y')
>>> Point(*map(float, '1, 2'.split(',')))
Point(x=1.0, y=2.0)
>>> _.x, _.y
(1.0, 2.0)

答案 1 :(得分:0)

将输入转换为特定类型为int或float

进入列表:

_list = list(map(int, input("Enter an x,y coordinate.").split(",")))

或变量:

a, b = map(int, input("Enter an x,y coordinate.").split(","))

答案 2 :(得分:0)

在此one=input("Enter an x,y coordinate.")之后,变量一个包含一个类似于此'x, y'的字符串,该字符串无法按原样转换为int

您需要首先使用str.split(',')拆分字符串,这将产生一个列表[x,y],然后您可以遍历列表并将xy中的每一个转换为{ {1}}使用intmap函数应用于列表int(..)的每个元素。

在代码中,您可以按照以下方式执行此操作:

[x, y]

作为旁注,您应该考虑使用one=input("Enter an x,y coordinate.") x, y = map(int, one.split(',')) 子句包装用户输入来处理用户插入非int输入的情况:

try .. except