|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位大神:
小甲鱼Python视频中的运算相关的魔法方法(上)-类和对象(IX),在介绍__int__()魔法方法时举例如下:
class ZH_INT:
def __init__(self, num):
self.num = num
def __int__(self):
try:
return int(self.num)
except ValueError:
zh = {'零':0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,'八':8,'九':9,
'壹':1,"贰":2,'叄':3,"肆":4,"伍":5,"陆":6,"柒":7,"捌":8,"玖":9}
result = 0
for each in self.num:
if each in zh:
result += zh[each]
else:
result += int(each)
result *= 10
return result // 10
其中我不太明白以下几点:
1.
else:
result += int(each)
这块语句具体起了什么作用?跟上面try:return int(self.num)语句有何区别?
2.
result *= 10
return result // 10
这块语句起了什么作用?为何要先给result自身乘以10,然后再除以10?
1、你输入的内容里面可能会有汉子和数字的集合体,例如:一三14,或者:5贰零,这个时候就可以直接int()了
2、result *= 10是每一位往前进1,例如:5贰零,最先匹配出 result=5,result *= 10后 result=50 ,再匹配下一位 “贰”,这个这个时候 result = 50 + 2 = 52,以此循环
匹配到最后一位后 result *= 10又执行了一次,使得结果大了10倍,所以输出的时候要 result // 10
|
|