python计算器小错误

2024-06-01 13:26:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我制作了这个简单的python计算器,但是有一个奇怪的bug

你输入的第一个等式没有任何变化。 第二次尝试时,它会起作用。 下次你尝试时,什么都没有发生。 如果你在那之后再试一次,它就会起作用。 发射型计算机断层扫描仪。发射型计算机断层扫描仪。ect

下面是一个例子(如果让人困惑,请原谅):

(程序)输入您的方程式:
(me)1-1
什么也没发生
(程序)(提示您再次输入)
(me)1-1
(程序)0
(程序)输入您的方程式:
(me)1-1
什么也没发生
(程序)(提示您再次输入)
(me)1-1
(程序)0
(程序)输入您的方程式:
(me)1-1
什么也没发生

下面是这张照片的样子: calc.py photo 无论使用什么数字或运算符,都会发生这种情况

这是我的全部代码:

while True:
  print('Enter an equation:')
  input('')
  while True:
       x, op, y = input().split()
       x = int(x)
       y = int(y)
       if op == '+':
            print(x + y)
            break
       elif op == '-':
            print(x - y)
            break
       elif op == '*':
            print(x * y)
            break
       elif op == '/':
            print(x / y)
            break
       else:
            print('Invalid equation!')
            break

Tags: 程序trueinputbug计算器intmeprint
2条回答

您有两个input()调用,这就是问题所在,使用一个并将其结果存储在一个变量中,然后使用它来代替第二个调用(还有,为什么有两个while True循环,如果您希望程序继续读取方程,只需使用一个循环并从中删除break):

while True:
    eq = input('Enter an equation:')
    x, op, y = eq.split()
    x = int(x)
    y = int(y)
    if op == '+':
        print(x + y)
    elif op == '-':
        print(x - y)
    elif op == '*':
        print(x * y)
    elif op == '/':
        print(x / y)
    else:
        print('Invalid equation!')

您有一个input()调用,它什么也不做,每次都会换行:) 此外,您根本不需要内部循环

   while True:
       print('Enter an equation:')
       x, op, y = input().split()  # <  just one is enough 😅
       x = int(x)
       y = int(y)
       if op == '+':
            print(x + y)
       elif op == '-':
            print(x - y)
       elif op == '*':
            print(x * y)=
       elif op == '/':
            print(x / y)
       else:
            print('Invalid equation!')

相关问题 更多 >