Python 3.x I';I’我想写一个计算器

Python 3.x I';I’我想写一个计算器,python-3.x,Python 3.x,这正是Mac终端中发生的情况: 输入要计算的命令: +,-,*或/: 键入命令后,它要求我输入num1和num2: 键入第一个数字:5 键入第二个数字:5 然后它问我: 要继续吗? 我输入“是”,程序重新开始。现在问题是,, 第二次计算时,它不会问我是否要继续,但它会直接跳到: 输入要计算的命令: +,-,*或/: 或者有时: 键入第一个数字:5 键入第二个数字:5 为什么会这样?我怎样才能让程序每次都问我是否想在每次计算后继续 loop = True while loop: def

这正是Mac终端中发生的情况:

输入要计算的命令:
+,-,*或/:
键入命令后,它要求我输入num1和num2:

键入第一个数字:5
键入第二个数字:5
然后它问我:

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

输入要计算的命令:
+,-,*或/:
或者有时:

键入第一个数字:5
键入第二个数字: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()

你知道在这种情况下我该怎么办吗

这取决于你的目标和你想做什么

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

导入操作系统
导入系统
输入数学
def main(argv=sys.argv):
打印(“评估计算器\n键入“退出”退出\n”)
尽管如此:
exp=输入(“键入数学表达式并按ENTER:”)
如果exp.lower()=“退出”:返回
其他:打印(评估(实验))
如果名称=“\uuuuu main\uuuuuuuu”:
main()
输入:2+2*2
产出:6

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


不建议将上述代码用于其他人使用的项目。

可能是因为您正试图反复重新定义这两个函数?你的代码结构不好你知道在这种情况下我应该怎么做吗?我还是个初学者谢谢先生,很抱歉反应太晚了。我很难理解sys.argv的功能和'if main==“main”:main()'部分。我删除了一个True,并将另一个True移动到代码末尾。它现在似乎工作得很好。