【问题标题】:Python percentage calculator does not call exit()Python 百分比计算器不调用 exit()
【发布时间】:2023-02-23 02:24:03
【问题描述】:

我正在尝试编写一个百分比计算器,询问科目数量,指定科目数量的分数并计算百分比。它运行良好,但在用户按下“n”后调用 exit() 时不会退出:

value = input("Do you want to calculate again (y/n):")
if value.lower == "y":
   percentage()  
elif value.lower == "n":       
   print("ok, sayonara") 
   exit() 

完整的代码是:

def percentage():           
    numbers = [] 
    x = int(input('How many subjects would you like to find the percentage for:')) 
    for i in range(x):
        n = int(input('subject ' + str(i+1) + ': '))
        numbers.append(n)
    final = sum(numbers) / len(numbers)
    print("The percentage is",final,"%")
while True:
    try:
        percentage()
        value = input("Do you want to calculate again (y/n):")
        if value.lower == "y":
           percentage()  
        elif value.lower == "n":       
           print("ok, sayonara") 
           exit() 
    except:
       print("\nOops! Error.  Try again...\n")

这是发生了什么:

【问题讨论】:

  • 那么在打印“sayon​​ara”之后会发生什么呢?
  • @mkrieger1 它甚至不打印。我会编辑问题
  • 你如何在 Python 中再次调用方法?

标签: python


【解决方案1】:

问题是您没有调用 lower 函数。使用value.lower()

【讨论】:

    【解决方案2】:

    value.lower不调用函数,指的是函数本身。所以你问的是一个函数等于value.lower == "n"中的一个字符串。

    您需要将其更改为value.lower() == "n""y" 也是如此。

    【讨论】:

      【解决方案3】:

      您的代码中有两个错误:

      if value.lower == "y":
      

      在这里,您将函数对象 value.lower 与字符串 "y" 进行比较,它们总是不同的。你的意思可能是:

      if value.lower() == "y":
      

      == "n" 也是如此。

      修复此问题并不能修复整个代码,因为except: 捕获了所有中断,包括exit() 中断,因此您需要except ValueError: 而不是允许exit() 中断完成您的程序。

      这是固定代码:

      def percentage():           
          numbers = [] 
          x = int(input('How many subjects would you like to find the percentage for:')) 
          for i in range(x):
              n = int(input('subject ' + str(i+1) + ': '))
              numbers.append(n)
          final = sum(numbers) / len(numbers)
          print("The percentage is",final,"%")
          
      while True:
          try:
              percentage()
              value = input("Do you want to calculate again (y/n):")
              if value.lower() == "y":
                 percentage()  
              elif value.lower() == "n":       
                 print("ok, sayonara") 
                 exit() 
          except ValueError:
             print("
      Oops! Error.  Try again...
      ")
      

      【讨论】:

        【解决方案4】:

        使用“break”而不是“exit()”。

        【讨论】:

        • 为什么这样可以解决问题?
        猜你喜欢
        • 1970-01-01
        • 2011-06-01
        • 2021-01-10
        • 1970-01-01
        • 1970-01-01
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多