关于内置函数的练习

1.回数是指从左向右读和从右向左读都是一样的数,例如12321,909
请利用filter()筛选出回数

方法一:

def huishu(num):#定义一个函数,判断是否为回文数
    if str(num) == str(num)[::-1]:#如果正向的=倒向的,则是回文数。但需要注意对于切片,只能针对字符串型
        return True
    else:
        return False

print(list(filter(huishu, range(1, 10000))))#根据True或者False返回值,使用filter

在这里插入图片描述

方法二:

from functools import reduce


def is_palindrome(n):  # 定义一个函数,判断是否是回文数
    l = list(str(n))  # 将数字转换成字符串型,放在一个列表中
    l.reverse()  # 对列表中的元素进行反向排序
    num = reduce(lambda x, y: int(x) * 10 + int(y), l)#需要累积求和,此为反向的数字
    return num == n#正向的数字=反向的数字


output = filter(is_palindrome, range(1, 1000))#调用函数,根据判断输出回文数
print('1~1000:', list(output))

在这里插入图片描述

2.利用map()函数,把用户输入的不规范的英文名字,
变为首字母大写,其他小写的规范名字

def normalize(name):
    return list(map(lambda x:x.capitalize(),name))#capitalize()将字符串的第一个字母变成大写,其它字母变为小写
L=['adam','LISA','Tom']
print(normalize(L))

在这里插入图片描述

3.利用map和reduce编写一个str2float函数,
把字符串’123.456’转换成浮点数123.456

from functools import reduce


def str2float(s):
    ch = {str(x): x for x in range(10)}  # 对于0~9的数字组成一个字典{'0':0,'1':1,……}
    # 把字符串分割
    l = s.split('.')#把字符串从小数点处分开
    # 整数部分
    n1 = reduce(lambda x, y: x * 10 + y, map(lambda x: ch[x], l[0]))
    # 小数部分
    n2 = reduce(lambda x, y: x * 10 + y, map(lambda x: ch[x], l[1]))
    n2 *= 0.1 ** len(l[1])  # a *=1 a = a*1  n2 = n2 * 0.1**4
    return n1 + n2


num = str2float('1234.4567')
print(num)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值