这是我的计算器。我之所以成功,是因为我的朋友挑战我让它成为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))
答案 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)])))