我正在制作一个以两个坐标作为输入,然后计算中点的程序。但是,当我尝试在将坐标的一部分与x和y值一起使用后将输入更改为整数时,它表示ValueError:对于带有基数10的int()的无效文字:'' < - 顺便说一句,这是一个空字符串。这是我的代码:
def distance():
p1=input('Input your first point:')
p2=input('Input your second point:')
split1=p1.find(',')
x1=int(p1[2:split1-1])
y1=p1[split1+1:-2]
split2=p2.find(',')
x2=p2[0:split2-1]
y2=p2[split2+1:-1]
x=x2-x1**2
y=y2-y1**2
d=(x+y)**.5
print('This is the distance between those points',d)`
答案 0 :(得分:1)
正如其他人所说,int('')
会产生此错误,因为对''
应转换为的数字没有一致意见。
如果您确实需要默认值,请考虑使用以下内容(您希望默认值为0)。
value = ''
intvalue = int(value or '0')
# 0
value = '1'
intvalue = int(value or '0')
# 1
话虽这么说,按照你想要的方式完成分割坐标的更简单方法是使用split()
x,y = map(int, '1,2'.split(','))
如果您的输入实际上是以下形式:(1, 2)
,则您需要忽略括号并仅抓取数字部分。
import re
val = '(1, 2)'
val = re.sub('\(|\)', '', val);
x,y = map(int, val.split(','))
或者更一般地说
val = '(-1, 2)' # or [-1, 2] or -1,2
val = re.search('\-?\d+\s*,\s*\-?\d+', val).group()
x,y = map(int, val.split(','))
对于您的具体示例:
def getxy(val):
val = re.search('\-?\d+\s*,\s*\-?\d+', val)
# Alert the user if invalid input was provided
if val is None:
raise Exception('Invalid input')
# Convert all coordinates to integers
return map(int, val.group().split(','))
x1, y1 = getxy(input('Input your first point:'))
x2, y2 = getxy(input('Input your second point:'))
答案 1 :(得分:0)
我认为您希望使用类似split()
的内容,而不是通过索引来解析您的输入:
def distance():
p1=input('Input your first point:')
p2=input('Input your second point:')
x1, y1 = p1.split(',', 1)
x1 = int(x1)
y1 = int(y1)
x2, y2 = p2.split(',', 1)
x2 = int(x2)
y2 = int(y2)
x=x2-x1**2
y=y2-y1**2
d=(x+y)**.5
print('This is the distance between those points',d)`
答案 2 :(得分:0)
您忽略了点的前两个字符,因此如果数字只有两位数,则会得到一个空字符串。最好用.flex_group__1, .flex_group__2, .flex_group__3, .flex_group__3_inner_bottom, .flex_container {
display: flex;
}
.flex_container {
flex-direction: row;
}
.flex_group__3 {
flex-direction: row wrap;
justify-content: flex-end;
}
.flex_group__1, .flex_group__2, .flex_group__3 {
flex-direction: column;
}
.flex_container * {
border: 1px solid;
}
img {
max-width: 100%;
}
分割字符串:
split
答案 3 :(得分:0)
我明白了,我仍然不完全确定我做错了什么,但我添加了一个逗号分裂条款。在开始时,我像我在这里使用替换,但它没有用。这次,它做到了!感谢所有试图提供帮助的人。这是我的解决方案:
def distance():
p1=input('Input your first point:')
p2=input('Input your second point:')
rp1=p1.replace('(','').replace(')','')
x1, y1 = rp1.split(',', 1)
x1 = int(x1)
y1 = int(y1)
rp2=p2.replace('(','').replace(')','')
x2, y2 = rp2.split(',', 1)
x2 = int(x2)
y2 = int(y2)
x=(x2-x1)**2
y=(y2-y1)**2
d=(x+y)**.5
print('This is the distance between those points',d)