字符串转换为数字---‘123456’转换为123456--函数中嵌套函数

 自己写一个函数,实现字符串转换为整数
    {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
    例如: '123456'
    返回 123456数字

    使用map和reduce函数

 转换过程:
    1.先将字符串传入char_number函数中,根据传入的字符串,在字典中作为key取出对应的数字,并返回,使用map()让要转换的字符串中的每一个字符中都执行一次char_number函数,执行完成之后会得到一个存放列表,例如[1, 2, 3, 4, 5, 6]
    2.使用reduce做累加,在累加函数中,让传入第一个参数*10再加上第二个参数,第一次执行得到1*10+2=12,第二次执行12*10+2=123,依次执行完成后,得到123456


法一:

# '123456'转换为  123456
# 定义一个函数,将字符串转换为一个一个的数字

def char_number(string):
    #存放字符串数字的key,对应的值为数字
    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]

    # 根据传入的string,从字典中取出数字
    number = chars_dict.get(string, string)
    #返回取出的数字
    return number
#转换列表  使用map()函数执行,得到[1,2,3,4,5,6]
rs = list(map(char_number,'123456'))
print(rs)

# 将[1, 2, 3, 4, 5, 6]组合起来,得到123456
# 累加函数
def result(x,y):
    #让x*10+y
    # 第一次执行 1*10+2=12 第二次 12*10+3 =123 依次执行之后得到123456
    num = x*10+y
    return num
# 在python3中需要引入reduce函数
from functools import reduce
# 使用reduce函数调用
a = reduce(result,rs)
print(a)
print(type(a))

rs = reduce(lambda x,y:x*10+y,rs)
print(rs)
print(type(rs))

法二:(函数中嵌套函数)

# 定义一个INT(string)函数
def INT(string):
    #函数中可以嵌套函数
    def char_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(char_number,string))
    #累加
    number = reduce(lambda x, y: x*10+y, rs)
    #返回转换之后的整数
    return number
number = INT('123456')
print(number)
print(type(number))


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值