Python习题chapter2:数据类型、运算符与内置函数

目录

1. 内置函数:map()函数——对于列表(或其他序列类型),对每个元素执行相同的操作

基本语法:map(func,seq1[,seq2,...])

        func - 函数,seq - 一个或多个可迭代序列,将func依次作用在序列seq1[,seq2,...]的每个元素(🔺 注意是每个元素!!!),得到一个新的可迭代序列(map对象)。

        1.1 当序列seq只有一个时,将函数func作用于这个seq的每个元素(🔺 注意是每个元素!!!)上,并得到一个新的可迭代序列;

        1.2 当序列seq有多个时,每个seq的同一位置的元素(🔺 注意是每个同一位置的元素!!!)同时传入多元的func函数,把得到的每一个返回值存放在一个新的可迭代序列中。

2. 内置函数:sum()函数 —— 对系列进行求和计算(🔺 注意是每个元素!!!)

基本语法:sum(iterable[, start])

         iterable – 可迭代对象,如:列表、元组、集合 start – 指定相加的参数,如果没有设置这个值,默认为0。

3. 内置函数:reversed()函数 —— 该方法返回一个逆序序列的迭代器(用于遍历该逆序序列)(🔺 一般用于列表逆序!!!)

基本语法:reversed(seq)

4. 内置函数:reduce()函数 ——对参数序列中元素进行累积

基本语法:reduce(func, seq[, initial])

         initial – 可选,初始参数 注意:在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在functools模块里,使用需要通过引入functools模块来调用reduce函数。

5. 内置函数:eval()函数 —— 用来执行一个字符串表达式,并返回表达式的值

基本语法:eval(expression[,globals[,locals]])

         expression – 表达式

         globals – 变量作用域(全局),如果被提供,必须是一个字典对象

         locals – 变量作用域(局部、但会覆盖globals),如果被提供,可以说任何映射对象

6. 内置函数:filter()函数 —— “过滤掉”,用于过滤序列,即用函数func过滤掉iterable序列中不符合条件的元素,返回由符合条件的元素组成的新序列;

基本语法:filter(func,iterable)

        序列的每个元素作为参数传递给函数进行判断,最后将返回值为True的元素放到新序列(filter对象)中。

7.内置函数 sorted()函数 —— 对列表元素进行排序(新建一个列表作为返回值)

基本语法:sorted(iterable, key=None, reverse=False)

         key – 指定一个函数(代表排序的规则),此函数在每次元素比较时被调用;

        reverse – 是否逆序,默认False升序排序。

8. lambda表达式 —— 定义一个匿名函数

基本语法:lambda [arg1[,arg2,.....argn]]: expression

9.保留固定位数小数

        9.1round()函数 - round(avg, 3)

        9.2 格式化输出 - "%.3f" % avg

        9.3decimal函数 - Decimal(avg).quantize(Decimal("0.000"))

二、习题及代码

2.1  6道简单例题~

# 练习内容:综合应用与例题解析
# 编写者:LWW
# 开发时间:2022/5/12 16:52

# 例题2-1 编写程序,输入一个整数,然后输出各个数字之和
num = input('2-1 请输入一个整数:')  # 1234
print(sum(map(int, num)))   # 10

''' 1. 内置函数:map()函数 ———— 对于列表(或其他序列类型),对每个元素执行相同的操作
       基本语法:map(func,seq1[,seq2,...])
       第一个参数为函数,后面的参数为一个或多个可迭代序列,将func依次作用在序列seq1[,seq2,...]的每个元素(🔺 注意是每个元素!!!),得到一个新的可迭代序列(map对象)
    1.1 当序列seq只有一个时,将函数func作用于这个seq的每个元素(🔺 注意是每个元素!!!)上,并得到一个新的可迭代序列
    1.2 当序列seq有多个时,每个seq的同一位置的元素(🔺 注意是每个同一位置的元素!!!)同时传入多元的func函数,把得到的每一个返回值存放在一个新的可迭代序列中
    
    2. 内置函数:sum()函数 ———— 对系列进行求和计算(🔺 注意是每个元素!!!)
       基本语法:sum(iterable[, start])
       iterable – 可迭代对象,如:列表、元组、集合
       start – 指定相加的参数,如果没有设置这个值,默认为0
'''

# 例题2-2 编写程序,输入一个字符串,输出反转后的字符串(要求用内置函数实现)
s = input('2-2 请输入一个字符串:')  # 1234
print(list(reversed(s)))   # ['4', '3', '2', '1']
from functools import reduce
from operator import add
print(reduce(add, reversed(s)))  # 4321

''' 3. 内置函数:reversed()函数 ———— 该方法返回一个逆序序列的迭代器(用于遍历该逆序序列)(🔺 一般用于列表逆序!!!)
       基本语法:reversed(seq)
    4. 内置函数:reduce()函数 ———— 对参数序列中元素进行累积
       基本语法:reduce(func, seq[, initial])
       initial – 可选,初始参数
       注意:在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在functools模块里,使用需要通过引入functools模块来调用reduce函数
'''

# 例题2-3 编写程序,输入一个包含若干整数的列表,输出列表中的最大值
lst1 = input('2-3 请输入一个包含若干整数的列表:')  # 123,124,5
print(list(lst1))  # ['1', '2', '3', ',','1', '2', '4', '5'] 🔺 input()的输出类型是str,所有变成单个元素了!!!
print(max(list(lst1)))

lst2 = eval(input('2-3 请输入一个包含若干整数的列表:'))  # 123,124,5
print(max(lst2))  # 124

''' 5. 函数:eval()函数 ———— 用来执行一个字符串表达式,并返回表达式的值
       基本语法:eval(expression[,globals[,locals]]) 
       expression – 表达式
       globals – 变量作用域(全局),如果被提供,必须是一个字典对象
       locals – 变量作用域(局部、但会覆盖globals),如果被提供,可以说任何映射对象
    ▲ input()的输出类型是str,eval()函数好智能呀哈哈哈
'''
'''
s1 = input("请输入一个整数:")
print(type(s1))  # <class 'str'>
s2 = eval(input("请输入一个整数:"))
print(type(s2))  # <class 'int'>
'''

# 例题2-4 编写程序,输入包含若干整数的列表,把列表中所有的整数转换为字符串,然后输出包含这些字符串的列表
lst4 = eval(input('2-4 请输入一个包含若干整数的列表:'))
print(list(map(str, lst4)))

# 例题2-5 编写程序,输出一个包含若干任意数据的列表,输出该列表等价于True的元素组成的列表
lst5 = eval(input('2-5 请输入一个包含若干数据的列表:'))
print(list(filter(None, lst5)))  # 🔺 非空即True
''' 6. filter()函数 ———— “过滤掉” ———— 用于过滤序列,即用函数func过滤掉iterable序列中不符合条件的元素,返回由符合条件的元素组成的新序列
       基本语法:filter(func,iterable)
       序列的每个元素作为参数传递给函数进行判断,最后将返回值为True的元素放到新序列(filter对象)中
'''

# 例题2-6 编写程序,输入一个包含若干整数的列表,输出一个新列表(奇数在前偶数在后,并且奇数之间的相对顺序不变、偶数之间的相对顺序也不变)
lst6 = eval(input('2-6 输入一个包含若干整数的列表:'))
newLst = sorted(lst6, key=lambda num: num % 2 == 0)  # ▲ ▲ ▲
print(newLst)
''' 7. sorted()函数 ———— 对列表元素进行排序(新建一个列表作为返回值)
       基本语法:sorted(iterable, key=None, reverse=False)
       key – 指定一个函数(代表排序的规则),此函数在每次元素比较时被调用
       reverse – 是否逆序,默认False升序排序
    8. lambda ———— 定义一个匿名函数
       基本语法:lambda [arg1[,arg2,.....argn]]: expression
'''

2.2  再来6道简单编程题吧!!!

# 练习内容:本章习题
# 编写者:LWW
# 开发时间:2022/5/12 20:33

# 编程题1:输入一个包含若干自然数的列表,输出这些自然数的平均值,结果保留三位小数
lst1 = eval(input('1. 请输入一个包含若干自然数的列表:'))  # 1,2,3
avg = sum(lst1)/len(lst1)
print(round(avg, 3))  # 2.0 X有BUG

print("%.3f" % avg)  # 2.000

from decimal import Decimal
print(Decimal(avg).quantize(Decimal("0.000")))   # 2.000

''' 1.round(x,n) ———— “舍入函数” ———— 将返回x的值,该值四舍五入到小数点后的n位数字
    2.保留小数:
     2.1 round()函数 - round(avg, 3)
     2.2 格式化输出 - "%.3f" % avg
     2.3 decimal函数 - Decimal(avg).quantize(Decimal("0.000"))
'''

# 编程题2:输入一个包含若干自然数的列表,输出这些自然数降序排列后的新列表
lst2 = eval(input('2. 请输入一个包含若干自然数的列表:'))  # 1,2,3
print(sorted(lst2, reverse=True))  # [3, 2, 1]

# 编程题3:输入一个包含若干自然数的列表,输出一个新列表,新列表中每个元素为原列表中每个自然数的位数
# 🔺 map(len, seq)
lst3 = eval(input('3. 请输入一个包含若干自然数的列表:'))  # 123,4,56,7
length = list(map(len, map(str, lst3)))  # 🔺 🔺 🔺
print(length)  # [3, 1, 2, 1]

# 编程题4:输入一个包含若干数字的列表,输出其中绝对值最大的数字
# 🔺 max(seq, key=abs)
lst4 = eval(input('4. 请输入一个包含若干数字的列表:'))  # -9,8,7,-65,4,32
print(max(lst4, key=abs))  # -65

# 编程题5:输入一个包含若干整数的列表,输出这些整数的乘积
# 🔺 reduce()函数 ———— reduce(func, seq[, initial]) "元素累积"
lst5 = eval(input('5. 请输入一个包含若干整数的列表:'))  # -9,8,7,-65,4,32
from operator import mul
from functools import reduce
print(reduce(mul, lst5))  # 4193280
# 或者用for循环也可以
p = 1
for i in lst5:
    p = p*i
print(p)

# 编程题6:输入两个包含若干整数的等长列表,把这两个列表看作两个向量,输出这两个向量的内积
from operator import mul
lst6_1 = eval(input('6.1 请输入第一个包含若干整数的列表:'))  # 1,2
lst6_2 = eval(input('6.2 请输入一个与第一个等长的包含若干整数的列表:'))  # 1,2
print(sum(map(mul, lst6_1, lst6_2)))  # 5
print(list(map(mul, lst6_1, lst6_2)))  # [1, 4] 列表加运算

总结

The shoulders of teenagers should bear the grass the warblers and the breeze of the moon.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值