【问题标题】:how to make a calculator with python like in c++如何像在c ++中一样用python制作计算器
【发布时间】:2016-01-28 19:59:05
【问题描述】:

我想为“/”、“*”和“+”做一个计算器,所以我这样写我的代码

x,op,y=raw_input()
if op=='+':
  print int(x)+int(y)

在这里,如果我输入的数字有两位数,则会出错

x,op,y=raw_input().split()
if op=='+':
  print int(x)+int(y)

输入将像 20 + 20 这里是问题我想删除超过 9 的数字之间的这个空格以进行操作我想要输入像 20+20 而不是 20 + 20 这样我可以提交网上判断的代码请帮帮我

【问题讨论】:

    标签: python python-2.7 python-3.x wxpython ipython


    【解决方案1】:

    试试re.split("([+-/*])",raw_input()) 可能吗?

    my_input = raw_input()
    numbers = re.split("([+-/*])", my_input)
    if '+' in my_input:
        print float(numbers[0]) + float(numbers[1])
    

    >>> import re
    >>> re.split("\s*([+-/*])\s*",raw_input())
    29+ 22
    ['29', '+', '22']
    

    【讨论】:

    • 很高兴见到你很久以后的兄弟。但他会在这里放松操作员
    • 我该如何使用它???我想要一个原始的输入就像这样 20+20 打印 40 我想在这 2 个整数之间输入这个称为 op 的字符串,如果这个字符串“+”它是 + 等等
    • @Hackaholic 不,他不应该,因为它使用捕获组:) 很高兴见到你
    【解决方案2】:

    您真的需要自己解析表达式吗?怎么样

    expression = raw_input()
    answer = eval(expression)
    print answer
    

    ?

    如果默认异常引发不是您想要的行为,您可以使用try: 并捕获异常并做一些明智的事情。 (例如,如果表达式最终是 asdf'.8 或其他一些垃圾表达式,您可能需要与默认 SyntaxError 不同的行为。)

    注意:对我上面建议的方法的批评是它允许评估潜在的恶意字符串,因此首先清理您的输入可能是有意义的......

    【讨论】:

    • 你能告诉我如何使它成为浮点数以提高我的知识
    • 当我除以 12/5 时,例如它打印 2 我想要 2.4 浮点数,非常感谢我的兄弟
    • 很好的答案我想过把它放,但决定不这样做......但它工作正常
    • 有几件事会起作用,Amr——你可以做12. / 5(即,使用小数点明确地将其中一个设为浮点数),或者float(12) / 5,或者from __future__ import division,因为在Python中3 整数除法的默认行为是在余数非零时创建浮点数,而不是截断。
    猜你喜欢
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 2018-01-05
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多