这是一个非常简单的程序的代码:

import math

valid = True
oper = input('Please input your operation(+, -, *, /): ')
int1 = int(input('Please enter your first number: '))
int2 = int(input('Please enter your second number: '))


while(valid == True):
    if(oper == '/' and int2 == '0'):
        print('Error! Cannot divide by zero!')
        valid = False
    elif(oper == '/' and int2 != '0'):
        print(int1 / int2)
    elif(oper == '+'):
        print(int1 + int2)
    elif(oper == '-'):
        print(int1-int2)
    elif(oper == '*'):
        print(int1 * int2)


    else:
        print('Invalid Operation')


每当用户输入0的数字int2时,我希望程序打印出他们不能执行的操作。

非常感谢您提供一些帮助,让该程序不要让它们被零除而结束程序,或者使它们重新开始。

最佳答案

这应该按预期执行:

import math

while(True):
  oper = input('Please input your operation(+, -, *, /): ')
  int1 = int(input('Please enter your first number: '))
  int2 = int(input('Please enter your second number: '))

  if(oper == '/' and int2 == 0):
      print('Error! Cannot divide by zero!')
  elif(oper == '/'):
      print(int1 / int2)
  elif(oper == '+'):
      print(int1 + int2)
  elif(oper == '-'):
      print(int1-int2)
  elif(oper == '*'):
      print(int1 * int2)
  else:
      print('Invalid Operation')


您会注意到一些细微的变化:


我将循环移到输入之外。这样,程序会不断循环询问输入。
我删除了有效的支票。该程序将永远循环,如果用户尝试在分母中输入零(按要求输入),则要求新输入。
我从'0'中删除​​了引号。您之前的代码试图查看输入是否等于string 0,这与int 0不同。这是一个很小的差异(就代码而言),但对于功能。
我删除了int2 != 0条件,因为它不是必需的。 oper == '/'int2 == 0已经被捕获,因此如果oper == '/',则int2不能为零。

10-08 10:49