python3:小练习

练习1:将ZCASH交易信息转换为字典存储

这个是工作中的实战,需要验证SE返回的ZCASH交易信息,格式为'ADDRESS:'+地址,'AMOUNT:'+转账金额, 'FEES:'+交易费用,每个字段用换行符'\n'分割,用python实现如下

将字符串response = '414444524553533A0A743151563439714D4A5755646932797875485779324D32715048657832737A483945370A414D4F554E543A0A5A454320302E30373631343830310A464545533A0A5A45432031302E3031353500'
转换为字典
{'ADDRESS:': '743151563439714D4A5755646932797875485779324D32715048657832737A48394537', 'AMOUNT:': 'ZEC 0.07614801', 'FEES:': 'ZEC 10.0155'}
 

response = '414444524553533A0A743151563439714D4A5755646932797875485779324D32715048657832737A483945370A414D4F554E543A0A5A454320302E30373631343830310A464545533A0A5A45432031302E30313535'
# 将响应值按'\n'做切割
temp_list = response.split('0A')
##print(len(temp_list))
# 将temp_list中偶数坐标的数据转换为字母放到列表keys,奇数坐标的数据如果是5A4543开头就转换后在放到列表values中
# 2个字符为一组,是16进制的数字,转换为10进制后再用chr得到字符串
keys = []
values = []
for i in range(len(temp_list)):
      # 得到所有的key
      if i %2 ==0:
            temp_str=''
            for j in range(0,len(temp_list[i]),2):
                  temp_str += chr(int(temp_list[i][j:j+2],16))
            keys.append(temp_str)
      else:
            # 得到所有的value
            if '5A4543' == temp_list[i][:6]:
                  #需要转换为字符
                  s =  temp_list[i]
                  values.append( "".join([chr(int(s[j:j+2],16)) for j in range(0,len(s),2)]))
            else:
                  values.append(temp_list[i])

# 保存到字典中
out_dict=dict(zip(keys,values))
print(out_dict)

练习2:2.不使用float()函数,实现浮点数相加,比如12.5+64.32=76.82


#思路:以小数点做分割,先将小数点前面的数分别相加得到整数部分的和integer_sum,再将小数部分也相加等到小数部分的和decimal_sum;integer_sum + decimal_sum/10**(len(decimal_sum))即可

a = '12.5'
b = '18.86542'
integer_sum = int(a.split('.')[0]) + int(b.split('.')[0])
mode = max(len(a.split('.')[1]), len(b.split('.')[1] ))
decimal_sum = int(a.split('.')[1])*10**(mode-1) + int(b.split('.')[1])
result = integer_sum + decimal_sum/10**mode
print(result)

 

你可能感兴趣的:(python)