all_digits(string)
功能:
首先,最好了解预定义all_digits(string)
函数的作用。以下是该函数的示例实现,它可以根据您的描述工作。它检查字符串的每个字母是否是数字并相应地返回布尔值True
或False
:
def all_digits(string):
''' only returns True if all characters of the string are Integers '''
for l in string:
if l.isdigit(): pass
else: return False
return True
string2num(string)
带有raise
语句的函数:
现在,我们可以在函数的错误处理块中使用这个string2num(string)
函数。由于您的问题只要求您处理raise
一个特定的异常,而不是继续使用备用代码块,因此您不需要该try: ... except:
块。
使用正确的raise
语句语法,我们可以编写:
def string2num( string = '-23'):
if all_digits(string):
return int('23')
raise SyntaxError("not an integer")
我们得到:
>>> string2num()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 4, in string2num
SyntaxError: not an integer
带try: ... except: ...
块:
但是,如果您确实想在引发异常时执行备用代码块,则可以使用try: ... except:
块语法。例如,您可能需要它,如果您想进一步检查字符串是否为负整数,如果是,则返回负整数:
def string2num( string = '-23'):
try:
if all_digits(string):
return int(string)
raise SyntaxError("not an integer")
except SyntaxError:
#alternate code goes here#
try:
return int(string)
except ValueError:
print "string contains an alphabet"
这将产生:
>>> string2num()
-23
>>> string2num('ab2')
string contains an alphabet
声明风格if
:
作为对你的风格的一个附注,你不必明确地写出一个表达式的计算结果是在 if 语句中True
还是False
在 if 语句中,如下所示:
if all_digits(string) is True:
由于all_digits(string)
返回一个布尔值,您可以等效地说if True
,如下所示:
if all_digits(string):