【问题标题】:Calculator Loop in PythonPython中的计算器循环
【发布时间】:2016-04-20 07:52:44
【问题描述】:

需要给我的计算器添加一个循环,让用户可以选择重新启动计算器,方法是将代码放在一个while循环中,条件是用户的输入应该是'y'或'Y'。

def add(x, y):
   return x + y

def subtract(x, y):
   return x - y

def multiply(x, y):
   return x * y

def divide(x, y):
   return x / y

print("Select operation.")
print("1.Add")
print("2.Subtract")
print("3.Multiply")
print("4.Divide")

choice = input("Enter choice(1/2/3/4):")

num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))

if choice == '1':
   print(num1,"+",num2,"=", add(num1,num2))

elif choice == '2':
   print(num1,"-",num2,"=", subtract(num1,num2))

elif choice == '3':
   print(num1,"*",num2,"=", multiply(num1,num2))

elif choice == '4':
   print(num1,"/",num2,"=", divide(num1,num2))
else:
   print("Invalid input")

【问题讨论】:

  • 你试试怎么样?
  • 尝试做一个while 循环。如果用户输入“y”或“Y”,则使循环继续。如果你不能让它工作,请返回这里,但不要不尝试。
  • 确实知道如何制作循环吗?您是否尝试过阅读有关 Python 的书籍或教程?
  • 顺便说一句,看看operator 模块。
  • 你有没有尝试过?

标签: python calculator


【解决方案1】:

只需在 Alex 的帖子中添加一些内容

cont = "y"
while cont.lower() == "y":
    print("Select operation\n1.Add\n2.Subtract\n3.Multiply\n4.Divide")

    choice = input("Enter choice(1/2/3/4):")

    num1 = int(input("Enter first number: "))
    num2 = int(input("Enter second number: "))

    if choice == '1':
       print(num1,"+",num2,"=", (num1 + num2))

    elif choice == '2':
       print(num1,"-",num2,"=", (num1 - num2))

    elif choice == '3':
       print(num1,"*",num2,"=", (num1 * num2))

    elif choice == '4':
       print(num1,"/",num2,"=", (num1 / num2))
    else:
       print("Invalid input")
    cont = input("Continue?y/n:")
    if cont == "n":
        break

【讨论】:

    【解决方案2】:

    实在看不出问题出在哪里,你可以用另一个输入语句,检查while循环条件中的值...

    cont = "y"
    while cont == "y" or cont == "Y":
        print("Select operation.")
        print("1.Add")
        print("2.Subtract")
        print("3.Multiply")
        print("4.Divide")
    
        choice = input("Enter choice(1/2/3/4):")
    
        num1 = int(input("Enter first number: "))
        num2 = int(input("Enter second number: "))
    
        if choice == '1':
           print(num1,"+",num2,"=", (num1 + num2))
    
        elif choice == '2':
           print(num1,"-",num2,"=", (num1 - num2))
    
        elif choice == '3':
           print(num1,"*",num2,"=", (num1 * num2))
    
        elif choice == '4':
           print(num1,"/",num2,"=", (num1 / num2))
        else:
           print("Invalid input")
        cont = raw_input("Continue?y/n:")
    

    【讨论】:

    • while cont.lower() == "y"
    • 给我这个错误: Traceback(最近一次调用最后):文件“C:/Users/Ratik/Desktop/Python/CALC2.py”,第 27 行,在 cont = raw_input( "继续?y/n:") NameError: name 'raw_input' is not defined
    • 你使用的是python 2.7还是python 3.x?
    • raw_input 已在 python 3.x 中删除,输入也应该可以解决问题。
    • 我正在使用 3.x 我将尝试使用 Input
    【解决方案3】:

    你可以像这样简单地修改你的代码

    def continue():
        resp = input("Continue ? Y/N ")
        if resp == "n" or resp == "N":
            return False
        return True
    while True:
        print("Select operation.")
        print("1.Add")
        print("2.Subtract")
        print("3.Multiply")
        print("4.Divide")
    
        choice = input("Enter choice(1/2/3/4):")
    
        num1 = int(input("Enter first number: "))
        num2 = int(input("Enter second number: "))
    
        if choice == '1':
           print(num1,"+",num2,"=", (num1 + num2))
    
        elif choice == '2':
           print(num1,"-",num2,"=", (num1 - num2))
    
        elif choice == '3':
           print(num1,"*",num2,"=", (num1 * num2))
    
        elif choice == '4':
           print(num1,"/",num2,"=", (num1 / num2))
    
        else:
           print("Invalid input")
        if not continue() :
           break
    

    您可以随意更改继续功能

    【讨论】:

    • 你不需要变量run。只需循环 while True: 并在循环中使用 if not continueU(): break
    • continue 函数应该在循环之外定义,您必须在其中删除对int 的转换。
    【解决方案4】:

    这是一个while 循环示例:

    已更改

    again = "y"
    while again:
        # ...
        #enter your code here
        # ...
        a = input("do you want to do again (y/Y): ")
        if a not in ("y","Y"):
            a=""
    

    【讨论】:

      【解决方案5】:
      enter code here
          while True:
              b = int(input('first num: '))
              c = input('operator: ')
              d = int(input('second num: '))
              if c == '+':
                  print(b + d)
              elif c == '-':
                  print(b - d)
              elif c == '*':
                  print(b * d)
              elif c == '/':
                  print(b / d)
              q = input('do you want to continue?: ')
              if q == 'y':
                  continue
              else:
                  break
      

      【讨论】:

      • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
      【解决方案6】:

      这是另一个while循环示例

      menu ="""
       0. chose 0 to quit
       1. chose 1 to add
       2. chose 2 to sub
       3. chose 3 to multi
       4. chose 4 to div
      
      """
      chose= None
      
      
      while(chose != 0):
          print(menu)
          num1 =int(input('first num is: '))
          num2 =int(input('second num is: '))
          chose= int(input("plz enter your chose: "))
          if(chose == 1):
      
              print(num1, " + ",num2," = ",num1+num2)
          elif(chose == 2):
              print(num1, " - ",num2," = ",num1+num2)
          elif(chose == 3):
              print(num1, " * ",num2," = ",num1+num2)
          elif(chose == 4):
              if(num2 == 0):
                  print("You can not divide by zero")
              else:
                  print(num1, " / ",num2," = ",num1+num2)
          else:
              print('plz enter a correct option')
      

      【讨论】:

      • 使用一些代码示例编辑来组织您的答案。
      猜你喜欢
      • 2018-06-29
      • 2015-10-02
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2010-11-14
      • 2016-02-08
      相关资源
      最近更新 更多