因此,对于这一门课程,我必须制作一个计算器。 我所拥有的一切工作,但对于分频功能,每当我运行它,我得到的错误Python - ValueError:无效文字float():4/
Traceback (most recent call last):
File "C:\Python27\Calculator.py", line 43, in <module>
val3 = Mult(val1, val2)
File "C:\Python27\Calculator.py", line 17, in Mult
val1 = float(val1)
ValueError: invalid literal for float(): 4/
这里是我的代码,我意识到,我可能会使用这样的东西,如获得操作数超出了许多不正当手段字符串,但我真的不知道任何其他方式。
def firstNu(fullLine, symbol):
return fullLine[0:fullLine.find(symbol)].strip()
def secondNumber(fullLine, symbol):
return fullLine[fullLine.find(symbol) + len(symbol) : len(fullLine)].strip()
def Add(val1, val2):
val1 = float(val1)
val2 = float(val2)
val3 = val1 + val2
return val3
def Sub(val1, val2):
val1 = float(val1)
val2 = float(val2)
val3 = val1 - val2
return val3
def Mult(val1, val2):
val1 = float(val1)
val2 = float(val2)
val3 = val1 * val2
return val3
def Div(val1, val2):
val1 = val1
val2 = val2
val3 = val1/val2
return val3
while True:
equat = raw_input()
if equat.find("+") == 1:
operand = ('+')
val1 = firstNu(equat, operand)
val2 = secondNumber(equat, operand)
val3 = Add(val1, val2)
elif equat.find("-") == 1:
operand = ('-')
val1 = firstNu(equat, operand)
val2 = secondNumber(equat, operand)
val3 = Sub(val1, val2)
elif equat.find("*"):
operand = ('*')
val1 = firstNu(equat, operand)
val2 = secondNumber(equat, operand)
val3 = Mult(val1, val2)
elif equat.find("/"):
operand = ('/')
val1 = firstNu(equat, operand)
val2 = secondNumber(equat, operand)
val3 = Div(val1, val2)
print(val1, operand, val2, "=", val3)
在此先感谢
很多问题:由于您使用'equat.find(...)== 1',您只支持1位数字。像'val1 = val1'这样的行应该是不必要的。你的'firstNu'和'secondNumber'函数应该被合并成一个更好的函数来返回多个值。 –