首页 > 解决方案 > 我在 Python 中面临一个问题,用户说“是”或“否”,无论如何循环仍然执行。为什么会这样?

问题描述

我正在制作一个 python 计算器程序,在完成一次计算后询问用户是否要继续。如果用户说是,则循环应该运行,否则它应该停止。我面临一个问题,用户说是或否,循环仍然执行。为什么会这样???

print("This is a Calculator In Python. !!!")
print("I Can Do Addition, Subtraction, Multiplication and Division.!!")

def addition():
    print("Please Don't Enter Float Values Here.")
    num1 = int(input("Enter First Number.!!"))
    num2 = int(input("Enter Second Number. !!"))
    result = num1 + num2
    return result
def subtraction():
    print("Please Don't Enter Float Values Here.")
    num1 = int(input("Enter First Number.!!"))
    num2 = int(input("Enter Second Number.!!"))
    result = num1 - num2
    return result
def multiplication():
    print("You Can Enter Float Values Here.")
    num1 = float(input("Enter First Number.!!"))
    num2 = float(input("Enter Second Number.!!"))
    result = num1 * num2
    return result
def division():
    print("You Can Enter Float Values Here.")
    num1 = float(input("Enter First Number.!!"))
    num2 = float(input("Enter Second Number.!!"))
    result = num1 / num2
    return result


print("""1. a for Addition
2. s for subtraction
3. m for multiplication
4. d for Division""")
select = "Yes"

while select:
  choice = str(input("You Choose The Operation."))
  if choice == "a":
    print(addition())
  elif choice == "s":
    print(subtraction())
  elif choice == "m":
    print(multiplication())
  elif choice == "d":
    print(division())
  else:
    print("Invalid Input")
  select=str(input('Continue Yes or No '))
print("Thank you..!")

标签: pythonpython-3.xloopshelper

解决方案


您已将循环定义为while select,这意味着只要认为 select 不是None,它将继续循环

在您的循环中,您将用户输入分配给select,这意味着只要用户输入任何内容,它将始终保持循环。

要解决此问题,您应该让 while 循环检查是否select为“是”:

while select.lower().strip() == "yes":
    choice = input("You Choose The Operation. ")
    if choice == "a":
        print(addition())
    elif choice == "s":
        print(subtraction())
    elif choice == "m":
        print(multiplication())
    elif choice == "d":
        print(division())
    else:
        print("Invalid Input")
    select = input("Continue Yes or No ")
print("Thank you..!")

此外,input()返回一个字符串,因此您无需将其包装在str()调用中。


推荐阅读