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):