如何根据python中的运算符打印变量?

时间:2018-05-02 16:24:50

标签: python

我正在尝试编写一个简单的计算器,但我遇到了问题。我似乎无法添加,减去,乘以或除以两个变量并打印它们。我正在尝试编码,以便用户可以与操作员一起输入数字。有任何想法吗?

谢谢,

SanguineL

Unit: milliseconds
 expr      min       lq     mean   median       uq      max neval
 f1() 100.0000 107.0000 115.0000 115.0000 117.0000 127.0000    10
 f2() 202.0000 209.0000 212.0000 212.0000 214.0000 227.0000    10

3 个答案:

答案 0 :(得分:1)

您需要区分来自raw_input字符串与运算符所代表的函数

if operator == "+":
    answer = number1 + number2
elif ...

operator模块允许您构建一个抽象查找过程的字典:

import operator
number1 = raw_input ("What is the first number?")
op = raw_input ("What is the operator?")
number2 = raw_input ("What is the second number?")
funcs = {"+": operator.add, "-": operator.sub, "*": operator.mul, "/": operator.div}

try:
    f = funcs[op]
except KeyError:
    raise ValueError("Undefined operator %s" % (op,))
answer = f(number1, number2)

答案 1 :(得分:0)

不知道raw_input ("What is the first number?")是什么意思(假设它是某种形式输入或sdt_in),但下半部分可能是(不要忘记转换你的输入,如number1 = int(number1)) :

if operator == '+'
    answer = number1 + number2
elif operator == '-'
    answer = number1 - number2
elif operator == '*'
    answer = number1 * number2
elif operator == '/'
    answer = number1 / number2
print(answer)

答案 2 :(得分:0)

所以你的代码有几个问题,第一个问题是raw_input总是假设输入是一个字符串,所以你的number1,operator和number2对象将是字符串(我假设你只想要运算符变量为字符串)。如果要将数字转换为浮点数,则需要编写类似number1 = float(raw_input ("What is the first number?"))

的内容

第二个问题是您需要使用if语句而不是if语句启动elif块。 elif语句仅在if语句之后出现,因为它代表“else if” - 即表单中的其他内容如果有的话。

第三个问题是您没有在条件语句中为您的运算符添加引号。 Python不会自动假设它们是字符串。 Python将假设它们是您尚未声明的变量。您应该有elif operator == '-'之类的声明,以使比较有效。

第四个也是最后一个问题(我看到)是因为你正在使用raw_input,看起来你正在使用python 2.当使用除法运算符/时,Python 2有一个奇怪的行为 - 即如果对它的输入是intslongs,它会对该部门进行底层。如果您不了解这种行为,可能会引起很多麻烦。您可能应该在代码的开头包含一个from __future__ import division行,因此除以答案。