【问题标题】:Python looping with try and exceptPython 循环使用 try 和 except
【发布时间】:2016-04-06 18:17:09
【问题描述】:

我正在尝试编写一个程序来读取用户输入的数字,直到用户输入完成。如果用户键入“完成”以外的非数字,我想返回一个错误消息,例如“请输入一个数字。当用户输入“完成”时,我想计算数字的总数,数字计数和平均值。我尝试使用 try 和 except 来创建一个 while 循环,以捕获除完成之外的非数字错误。这是技巧的一部分,除非字符串“完成”,否则字符串条目是错误的。这里是我的代码的开头没有任何尝试创建可以总计、计数和最大化的文件。

bank = 0
number = 0

while True:

    try:   
        number = int(raw_input("Enter an integer ( such as 49 or 3 or 16) \n"))
        bank = bank + number
        print 'You entered--- ', number, 'Your running total is ', bank    
    except:
        if number == 'done':
            print 'Done'
        else:
            if number == 'done':
                print 'Done'
            else:
                print 'Your entry was non-numberic.  Please enter a number.'    

bank = number + bank

当我运行它并输入“done”时,我得到“else:”响应和一个新的输入行。我没有从 if number == "done"

得到“完成”打印

【问题讨论】:

    标签: loops while-loop try-catch except


    【解决方案1】:

    用python 3写的答案

    使用的异常是 ValueError,因为编译器在 第 7 行 中完成了转换,因此捕获了这个错误,所以我只是在 第 19 行添加了 continue 使其跳过错误并返回开始。

    bank = 0
    count = 0
    while True:
        try:
            number = input('enter an integer:\n')
            if number != 'done':
                bank += int(number)
                print('you entered -- ', number, 'your total is ', bank)
                count += 1
            elif number == 'done':
                print('Done')
                print('you entered %d numbers' % count)
                print('Your total is %s' % bank)
                average = bank/count
                print('Your average is %.02f' % average)
                break
        except ValueError:
            print('oops!! that was not an integer')
            continue
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      相关资源
      最近更新 更多