我一直在制作一个线性方程计算器,我想知道如何让python使用负数。像int(),float()等......
这是我的代码。
import time
print("Hello and welcome to the linear equation calculator.")
time.sleep(2)
print("Enter the first co-ordinate like this - (xx, yy): ")
coordnte1 = input()
print("Now enter the second co-ordinate like this, with the brackets, - (xx,yy): ")
coordnte2 = input()
print("Now the y-intercept: ")
yintrcpt = input()
ydif = coordnte2[1] - coordnte1[1]
xdif = coordnte2[0] - coodrnte1[0]
g = ydif / xdif
print("y = " + g + "x + " + yintrcpt)
问题是:
Traceback (most recent call last):
File "C:/Users/Dale/Documents/GitHub/new_python_rpi_experiments/linear.py", line 17, in <module>
ydif = coordnte2[1] - coordnte1[1]
TypeError: unsupported operand type(s) for -: 'str' and 'str'
我是Python的新手,所以任何帮助都会受到赞赏。
答案 0 :(得分:3)
您从输入中读取的内容是字符串,您需要提取坐标并将其转换为 float ,例如:
print("Enter the first co-ordinate like this - (xx, yy): ")
s = input()
现在s = "(34, 23)"
是字符串,你需要处理它(消除parens,逗号等等):
coords = [float(coord) for coord in s.strip('()').split(',')]
现在coords是一个浮点列表(数组),你可以coords[0]- coords[1]
等等。
答案 1 :(得分:1)
问题与负数无关。这是input()
给你一个文本字符串。 Python不知道如何使用文本字符串减去或进行数学运算,即使它们恰好包含数字字符。
您需要编写一个函数来将(10,3)
形式的字符串转换为两个数字。我将让您探索如何执行此操作,但字符串对象的strip
和split
方法可能对您有用,您可以使用int()
或float()
在只包含数字值的字符串上,将其转换为整数或浮点数字变量。例如:int('123')
为您提供了号码123
。
答案 2 :(得分:-1)
尝试int:
ydif = int(coordnte2[1]) - int(coordnte1[1])
xdif = int(coordnte2[0]) - int(coodrnte1[0])
答案 3 :(得分:-1)
ydif = float(coordnte2[1]) - float(coordnte1[1])
我认为是你的问题......
答案 4 :(得分:-2)
尝试使用eval将字符串转换为类型,例如
coordnte1 = eval(coordnte1)
coordnte2 = eval(coordnte2)
您可能希望将其放在try语句中,因为如果用户输入了无法评估的字符串,它将失败。