我需要创建一个计算两个坐标之间距离的脚本。我遇到的问题是,当我将坐标分配给对象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
答案 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]
,然后您可以遍历列表并将x
和y
中的每一个转换为{ {1}}使用int
将map
函数应用于列表int(..)
的每个元素。
在代码中,您可以按照以下方式执行此操作:
[x, y]
作为旁注,您应该考虑使用one=input("Enter an x,y coordinate.")
x, y = map(int, one.split(','))
子句包装用户输入来处理用户插入非int输入的情况:
try .. except