【问题标题】:How to only count valid inputs如何只计算有效输入
【发布时间】:2022-12-31 20:12:38
【问题描述】:

我有一个函数应该接受输入,计算平均值和总数以及记录数。

代码中的错误是:

尽管我添加了一个 try 和 except 来捕获错误,但这些错误也被添加到计数中。如何只计算整数输入而不计算“无效输入”部分?

代码sn-p

count = 0
total = 0
avg = 0
#wrap entire function in while loop
while True:
    #prompt user for input
    line = input('Enter a number: ')
    try:
        if line == 'done':
            break
        print(line)
        #function formulars for total, count, avg
        count = int(count) + 1
        total = total + int(line)
        avg = total / count
    except:
        print('Invalid input')
        continue
#print function results
print(total, count, avg)

使用上面的代码,输入的 print(total, count, avg) 的输出即 5,4,7, bla bla car, done :

  • 将是 16、4、5.33333333

  • 预期输出 16、3、5.33333333

【问题讨论】:

    标签: python-3.x conditional-statements


    【解决方案1】:

    当这一行:total = total + int(line) 抛出错误时,

    上一行 count = int(count) + 1 已经执行,增加了 count

    交换这两条线应该可以解决问题。

    【讨论】:

      【解决方案2】:

      你有另一个计数的原因是因为你添加了一个计数因为你放了'done',这不会引发错误,所以你可以这样做(在打印语句之前):

      ... # code before
      
      count -= 1
      
      print(total, count, avg)
      

      【讨论】:

        【解决方案3】:

        count = int(count) + 1之前添加line = int(line),这样异常将在count评估之前被捕获,或者将其与total交换:

        count = 0
        total = 0
        avg = 0
        while (line := input('Enter a number: ')) != 'done':
            try:
                # line = int(line)
                total += int(line)
                count += 1
                avg = total / count
            except ValueError:
                print('Invalid input')
        
        print(total, count, avg)
        
        # Enter a number: 5
        # Enter a number: 4
        # Enter a number: r
        # Invalid input
        # Enter a number: 7
        # Enter a number: done
        # 16 3 5.333333333333333
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-08
          • 2019-01-01
          • 2019-12-11
          • 2015-09-12
          相关资源
          最近更新 更多