如何让python使用负数

时间:2013-05-20 20:28:31

标签: python python-3.x

我一直在制作一个线性方程计算器,我想知道如何让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的新手,所以任何帮助都会受到赞赏。

5 个答案:

答案 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)形式的字符串转换为两个数字。我将让您探索如何执行此操作,但字符串对象的stripsplit方法可能对您有用,您可以使用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语句中,因为如果用户输入了无法评估的字符串,它将失败。