一个程序,接收 5 个整数并将它们及其立方体存储在字典中。如果输入的数字小于 3,则引发用户定义的异常 NumberTooSmall,如果输入的数字大于 30,则引发用户定义的异常 NumberTooBig。不管是否发生异常,最后都会打印字典的内容。 我的代码
n1,n2,n3,n4,n5 = int(input()),int(input()),int(input()),int(input()),int(input())
All = sorted([n1,n2,n3,n4,n5])
class NumberTooSmall(Exception):
def __init__(self, args):
self.num = args
class NumberTooBig(Exception):
def __init__(self, args):
self.num = args
dic = {}
try:
for i in All:
if i <3:
raise NumberTooSmall(i)
elif i> 30:
raise NumberTooBig(i)
else:
dic[i] = i**3
except NumberTooSmall as numtosmall:
dic = {**{'NumberTooSmall':numtosmall.num},**dic}
except NumberTooBig as numtobig:
dic = {**{'NumberTooBig':numtobig.num},**dic}
keypairs = list(zip(dic.keys(),dic.values()))
for i in keypairs:
if i[0] == 'NumberTooSmall' or i[0] == 'NumberTooBig':
print('{'+str(i[0]+' ',':',' '+str(i[1])+'}'))
else:
print(str(i[0])+' ',':',' '+str(i[1]))
输入
3
7
9
22
34
预期产量
{'Number too big': 34}
3 : 27
7 : 343
9 : 729
22 : 10648
这是一次很好的尝试。我基本上做了以下三个改进。
try
-except
块移至循环内。dic[]
里面的
except
所以现在代码如下所示:
n1,n2,n3,n4,n5 = 1,5,10,30,50
All = sorted([n1,n2,n3,n4,n5])
class NumberTooSmall(Exception):
def __init__(self, args):
self.num = args
class NumberTooBig(Exception):
def __init__(self, args):
self.num = args
dic = {}
for i in All:
try:
if i <3:
raise NumberTooSmall(i)
elif i> 30:
raise NumberTooBig(i)
else:
dic[i] = i**3
except NumberTooSmall as numtosmall:
dic[i] = 'NumberTooSmall'
except NumberTooBig as numtobig:
dic[i] = 'NumberTooBig'
keypairs = list(zip(dic.keys(),dic.values()))
for i,v in keypairs:
print(f'{i} : {v}')
结果是这样的:
1 : NumberTooSmall
5 : 125
10 : 1000
30 : 27000
50 : NumberTooBig