让我的计算器代码更短(python3)

时间:2017-04-20 02:21:39

标签: python calculator

这是我的计算器。我之所以成功,是因为我的朋友挑战我让它成为12行。我发了!现在我试图缩短它,但理论上它不能更短: 该计划必须: 1:解释一切并要求输入(第一行) 2:接受输入(第二行) 3:打印(答案) 4到12:由逻辑和操作组成。

我请大家看看我的代码并教给我一些新东西: 如何使它少于12行!

提前致谢! (ps。我不是为了学校这样做,这只是为了好玩,我在自己的时间学习)

以下是python 3:

print("\n enter 'first number' \n then the 'second number' \n then enter the 'type of operation': +  -  *  /   ")
a,b,c = [(input("Enter : ") ) for i in range(0,3) ]
def op(a,b,c):
    if c == '+':
        return(float(a)+float(b))
    elif c == '*':
        return(float(a)*float(b))
    elif c == '/':
        return(float(a)/float(b))
    elif c == '-':
        return(float(a)-float(b))
print('your answer is: ',op(a,b,c))

1 个答案:

答案 0 :(得分:1)

首先,您可以使用ast' literal_eval直接评估字符串文字。

import ast
print("\n enter 'first number' \n then the 'second number' \n then enter the 'type of operation': +  -  *  /   ")
a,b,c = [(input("Enter : ") ) for i in range(0,3) ]
def op(a,b,c):
    return ast.literal_eval("%f%s%f"%(a, c, b))
print('your answer is: ',op(a,b,c))

或者,如果你想计算线条,那就是一个欺骗性但是凌乱的单行解决方案:

print("\n enter 'first number' \n then the 'second number' \n then enter the 'type of operation': +  -  *  /   ");print('your answer is: ',__import__("ast").literal_eval("{0}{2}{1}".format(*[float(input("Enter : ")) if i != 2 else input("Enter : ") for i in range(0,3)])))