当前编码有点"初学者";该问题能够基于用户输入定义的每个点的坐标(x,y)来计算三角形ABC的面积。
我已经做了一些计算,只要我手动声明每个点的值就没有问题:
px1, px2, px3, py1, py2, py3 = [0,-2,2,0,1,1]
由于我想使用一种更高级的方法,我选择让用户通过输入键入相应的坐标:
print("Dreieckspunkt A in Koordinatenform (x,y): ")
p1 = input()
print("Dreieckspunkt B in Koordinatenform (x,y): ")
p2 = input()
print("Dreieckspunkt C in Koordinatenform (x,y): ")
p3 = input()
问题是:我可以去掉用户键入坐标的括号,并创建一个只包含坐标图的新列表(通过.lstrip、.rstrip、.split(",")。然而,由于输入被视为字符串,我无法使用列表的内容进行计算。当我试图将字符串格式化为int时,总会出现一些错误消息。
有什么建议可以解决我的问题吗?谢谢你的帮助!!!
Input会给出一个字符串。您可以使用int(p1)
将其转换为数字,但请注意,如果输入不是数字,则会引发错误。你可以把它包装在一个try-catch块中以避免这个
p1 = None
while not p1:
try:
p1 = int(input('p1: '))
except ValueError:
print('Expected a number')
print(2 * p1)
您还可以使用float()
将输入转换为数字(浮点)
x_values = []
y_values = []
n = 3 # Determines how many values you want user to input
for i in range(n):
x = float(input("nEnter x-coordinate: "))
y = float(input("Enter y-coordinate: "))
x_values.append(x)
y_values.append(y)
还要注意,不要先使用print('Enter num)
,然后再使用input()
。你可以使用input('Enter num')
两件事:
首先,对于使用input
,不需要添加print
语句。您可以将其包含在input
中。
p1 = input("Dreieckspunkt A in Koordinatenform (x,y): ")
接下来,您将希望用.split(',')
分割,
上的坐标,这将把每个输入值都分成一个列表。
p1 = input("Dreieckspunkt A in Koordinatenform (x,y): ").split(',')
和其他人所说的一样,这些将是一个字符串,所以您可以使用列表理解来转换为int
(我个人会转换为float
)。最后,您可以直接存储这两个值。
p1 = [float(x) for x in p1]
至
px1, py1 = [float(x) for x in p1]
综合起来:
px1, py1 = [float(x) for x in input("Dreieckspunkt A in Koordinatenform (x,y): ").split(',')]
px2, py2 = [float(x) for x in input("Dreieckspunkt B in Koordinatenform (x,y): ").split(',')]
px3, py3 = [float(x) for x in input("Dreieckspunkt C in Koordinatenform (x,y): ").split(',')]
注意:我可能会像下面的解决方案一样做一个循环,但我只是想在你学习的过程中向你展示它的分解方式。