其他分享
首页 > 其他分享> > 通过使用try-except块,编写一小段代码来汇总字符串中的数字

通过使用try-except块,编写一小段代码来汇总字符串中的数字

作者:互联网

背景:我的入门教材中的一个“手指练习”让我尝试编写这样的程序来教我如何使用try-except块.该教科书的设计是为了配合麻省理工学院MOOC的edX上的“6.00x”课程.这不是在线课程本身的一部分,而只是让我理解try-excpet块的一些练习.

到目前为止,这是我的代码:

def sumDigits(s):
'''Assumes s is a string
   Returns the sum of the decimal digits in s
       For example, if is is 'a2b3c' it returns 5'''
    try:
        digitsum = 0
        for i in s:
            digitsum += int(i)


    except TypeError:
        return 'You have hit a TypeError'

    except ValueError:
        return 'You have hit a ValueError'

    return digitsum

所以,我遇到的问题是知道将什么内容放入except子句中.我放入两个除了子句的文本是因为我只是希望我的程序运行.我假设解释器经历了一个像’456ab’的字符串,命中’a’,然后打印出我告诉它返回的文本,当它不可避免地遇到ValueError时.如何让它“忽略”字符串中的字母字符,只是使用字符串中的数字,所有这些都在try-except块的上下文中?

解决方法:

在循环中移动您的try,并使用pass作为异常处理程序忽略该异常:

digitsum = 0
for i in s:
    try:
        digitsum += int(i)
    except ValueError:
        pass  # ignore non-digit characters

除非任何i是int()无法处理的对象,否则你不会在这里遇到TypeError;例如什么都不是数字或字符串:

>>> int({})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string or a number, not 'dict'

标签:python,string,try-except
来源: https://codeday.me/bug/20190831/1774499.html