# -*- coding: utf-8 -*- ''' 练习一: 自己写一个函数,实现字符串转换为整数 {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9} 例如: '123456' 返回 123456数字 使用map和reduce函数 ''' # 字符串也可以使用map函数遍历,让每一个字符都执行一次int函数 # list1 = list(map(int,'123456')) ''' ''' # list1 = ['0','1','2','3','4','5','6','7','8','9'] # dict1 = {} # for x in range(0,10): # dict1[list1[x]] = x # rs = input('请输入您要转换的字符串:') # list2 = [] # for s in rs: # if s in dict1.keys(): # a = dict1[s] # list2.append(a) # num = 0 # for x in range(0,len(list2)): # num = list2[x] * (10 ** (len(list2) - x - 1)) + num # print(num) ''' 转换过程: 1.先将字符串传入char_number函数中,在函数中,根据传入的字符串,在 字典中取出对应的数字,并返回,使用map()让要转换的字符串中的每个字符都执行 一次char_number函数,执行完成之后会得到一个列表,例如[1,2,3,4,5,6] 2.使用reduce做累加,在累加函数中,让传入第一个参数*10再加上第二个函数值 第一次执行得到一个1*10+2=12,第二次执行;12*10+3 = 123,依次自行完成后,得到123456 ''' # 定义一个函数,将字符串转换为一个一个数字 def char_number(string): chars_dict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9} # 根据传递进来的字符串,作为key取出相应数字 number = chars_dict[string] # 返回取出的数字 return number # 转换列表 rs = list(map(char_number,'123456')) # 将[1,2,3,4,5,6]组合起来,得到123456 def result(x,y): # 让x*10+y num = x*10+y return num # 在python3中需要引入reduce函数 from functools import reduce # 使用reduce函数调用 # 可以使用lambda写简单函数 rs = reduce(lambda x,y:x*10+y,rs) print(rs) # 定义一个INT(string): def INT(string): #函数中可以嵌套函数 def cha_number(s): chars_dict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9} num = chars_dict[s] return num rs = list(map(cha_number,string)) # 累加 number = reduce(lambda x,y:x*10+y,rs) # 返回转换之后的整数 return number number = INT('123456') print(number)
python字符转整形
最新推荐文章于 2024-03-29 16:00:53 发布