几天前我刚开始使用python,一直在研究计算器(不是非常基础,但也不是很高级)。这个问题并不妨碍代码的运行或其他任何事情,它只是一个可视化的东西。 控制台中的输出如下所示(括号中的内容解释了正在发生的事情,实际上并不是输出的一部分):
4 (user prompted for first number, press enter afterwards)
+ (user prompted for an operator, press enter afterwards
5 (user prompted for second number, press enter afterwards)
9.00000 (answer is printed)
Process finished with exit code 0
基本上,当我把它输入控制台时,我希望它看起来像这样:
^{pr2}$我不希望它在我输入一个数字或运算符或其他任何东西之后开始换行,它看起来更像一个实际的计算器,当它沿着一行打印时。这有可能吗?如果可以,怎么做?顺便说一句,我知道end=""
与print
一起工作,但不能与{
import math
while True:
try:
firstNumber = float(input())
break
except ValueError:
print("Please enter a number... ", end="")
while True:
operators = ['+', '-', '*', '/', '!', '^']
userOperator = str(input())
if userOperator in operators:
break
else:
print("Enter a valid operator... ", end="")
if userOperator == operators[4]:
answer = math.factorial(firstNumber)
print(answer)
pause = input()
raise SystemExit
while True:
try:
secondNumber = float(input())
break
except ValueError:
print("Please enter a number... ", end="")
if userOperator == operators[0]:
answer = firstNumber + secondNumber
print('%.5f' % round(answer, 5))
elif userOperator == operators[1]:
answer = firstNumber - secondNumber
print('%.5f' % round(answer, 5))
elif userOperator == operators[2]:
answer = firstNumber * secondNumber
print('%.5f' % round(answer, 5))
elif userOperator == operators[3]:
answer = firstNumber / secondNumber
print('%.5f' % round(answer, 5))
elif userOperator == operators[5]:
answer = firstNumber ** secondNumber
print('%.5f' % round(answer, 5))
pause = input()
raise SystemExit
您的问题是您请求
input()
而没有指定您想要的。所以如果你看第一个:firstNumber = float(input())
它执行得很好,但是你点击了enter
,它会给出一个错误,只有在你指定你想要的时候才会出现。在尝试替换为以下内容:
这就是你要找的吗?在
我用我的方法建议:
^{pr2}$使用您的方法:
我想你指的是额外的新行。在
这是一个nice exercise,正如我在评论中所写的,我将忽略空白,从用户那里获得一个完整的表达式,然后解析它并计算结果。下面是一个小演示:
相关问题 更多 >
编程相关推荐