2

我一直在制作一个线性方程计算器,我想知道如何让 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 很陌生,所以任何帮助都将不胜感激。

4

5 回答 5

3

您从输入中读取的是string,您需要提取坐标并将它们转换为float,例如:

print("Enter the first co-ordinate like this - (xx, yy): ")
s = input()

现在s = "(34, 23)"是一个字符串,您需要对其进行处理(消除括号、逗号等...):

coords = [float(coord) for coord in s.strip('()').split(',')]

现在 coords 是浮点数的列表(数组),你可以做coords[0]- coords[1]等等。

于 2013-05-20T20:41:25.677 回答
1

这个问题与负数无关。它input()为您提供了一个文本字符串。Python 不知道如何对文本字符串进行减法或数学运算,即使它们恰好包含数字字符。

您将需要编写一个函数来将表单的字符串转换(10,3)为两个数字。我将让您探索如何做到这一点,但字符串对象的stripsplit方法可能对您有用,您可以在仅包含数值的字符串上使用int()float()将其转换为整数或浮点数多变的。例如: int('123')给你号码123

于 2013-05-20T20:42:57.270 回答
-1

尝试int:

ydif = int(coordnte2[1]) - int(coordnte1[1])
xdif = int(coordnte2[0]) - int(coodrnte1[0])
于 2013-05-20T20:31:15.077 回答
-1
ydif = float(coordnte2[1]) - float(coordnte1[1])

我觉得是你的问题...

于 2013-05-20T20:31:30.160 回答
-2

尝试使用 eval 将字符串转换为类型,例如

coordnte1 = eval(coordnte1)
coordnte2 = eval(coordnte2)

您可能希望将其放在 try 语句中,因为如果用户输入无法评估的字符串,它将失败。

于 2014-05-29T14:12:22.830 回答