我正在尝试写一个计算器

时间:2019-08-04 11:55:55

标签: python-3.x

这是在Mac Terminal中完全发生的情况:

Enter command to calculate: 
  +,-,* or/: 

在键入命令后,它要求我输入num1和num2:

type first number: 5
type second number: 5

然后它问我:

do you want to continue? 

我键入“是”,程序重新开始。现在的问题是 第二次进行计算时,它不会问我是否要继续,但是会直接跳到:

Enter command to calculate: 
  +,-,* or/: 

或有时:

type first number: 5
type second number: 5

为什么会这样?以及如何让该程序每次问我是否要在每次计算后继续?

loop = True
while loop:
 def func():
  usr = input('''Enter command to calculate: 
  +,-,* or/: 
  ''')
  if usr not in ("+,-,*,/"):
   print("Error! command not allowed. Try again")
   func()

  num1 = float(input("type first number: "))
  num2 = float(input("type second number: "))

  if usr == "+":
   print("{0} + {1} = {r:0.2f}".format(num1,num2,r=num1+num2))
  elif usr == "-":
   print("{0} - {1} = {r:0.2f}".format(num1,num2,r=num1-num2)) 
  elif usr == "*":
   print("{0} * {1} = {r:0.2f}".format(num1,num2,r=num1*num2)) 
  elif usr == "/":
   print("{0} / {1} = {r:0.2f}".format(num1,num2,r=num1/num2))

 def func2():  

  x = input("do you want to continue? ")
  if x == "yes":
   func()
  elif x == "no":
   exit()
  else:
   print("That was not clear. Try again: ")
   func2() 

 func()
 func2()

1 个答案:

答案 0 :(得分:1)

  

您知道在这种情况下应该怎么做吗?

取决于您的目标和确切的目标。

这是制作功能强大的控制台计算器的最简单方法,但同时又最不安全:

import os
import sys
import math

def main(argv = sys.argv):
    print("EVAL Calculator\nType 'exit' to exit\n")
    while True:
        exp = input("Type a mathematical expression and press ENTER: ")
        if exp.lower() == "exit": return
        else: print(eval(exp))

if __name__ == "__main__":
    main()

输入:2 + 2 * 2
输出:6

如果这不适用于您,则可以拆分字符串或使用正则表达式。
如果您只是想让代码正常工作,请将while True移到代码末尾并列出代码本身。

对于打算供其他人使用的项目,建议不要使用以上代码。