Python使用字符串(列表)的数字进行格式化和计算



当前编码有点"初学者";该问题能够基于用户输入定义的每个点的坐标(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(',')]

注意:我可能会像下面的解决方案一样做一个循环,但我只是想在你学习的过程中向你展示它的分解方式。

相关内容

  • 没有找到相关文章

最新更新