通过使用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