【发布时间】:2013-06-08 01:57:58
【问题描述】:
我想做什么:
创建一个计算器应用程序。编写需要两个数字的代码 和格式为:N1 OP N2 的运算符,其中 N1 和 N2 是浮点数或 整数值,OP为以下之一:+、-、、/、%、*,表示 加法、减法、乘法、除法、模数/余数和 分别取幂,并显示执行该操作的结果 在输入操作数上。
我能想到的:
def calculator(n1,op,n2):
n1 = float(n1)
n2 = float(n2)
if op == "+":
return (n1 + n2)
elif op == "-":
return (n1 - n2)
elif op == "*":
return (n1 * n2)
elif op == "/":
return (n1 / n2)
elif op == "%":
return (n1 % n2)
elif op == "**":
return (n1 ** n2)
它有效。但可能有两个潜在的改进:
现在在输入运算符时必须使用双引号(
""),例如calculator(3,"+",3)。否则解释器返回一个SyntaxError弹出窗口。我试图将if op == "+":更改为if op == +:,但随后解释器返回一个SyntaxError,在+之后突出显示:。现在该函数将所有类型的数字输入转换为
float(),即使将整数作为输入。如何让函数本身判断输入是整数还是浮点数,并进行相应的转换?
我阅读了有关函数的文档,但它只讨论了几种类型的参数,而且似乎都没有帮助解决当前的问题。我确信这是非常基本的东西,但作为初学者,我尝试过但无法弄清楚。
【问题讨论】:
-
您希望如何调用
calculator?calculator(1, +, 2)?你不能那样做。编写一个解析器并传入一个字符串:calculator('1 + 2'). -
修复 2. 根本不要在
n1和n2上调用float... -
@Blender 谢谢!抱歉,我不明白什么是解析器或如何编写解析器? “解析器读取 Python 程序。解析器的输入是词法分析器生成的标记流。本章描述词法分析器如何将文件分解为标记”这是我能够找到的,但我不要以为我明白。你愿意详细说明一下吗?非常感谢!初学者:-(
-
@hakuna121:不是 Python 解析器,而是一般的解析器。
-
@Blender : 不仅是 Python 初学者,而且是一般的初学者(编程) :P 好的,那我去看看如何编写解析器。非常感谢!
标签: python function math python-3.x arguments