python_day07(笔记及练习)

这篇博客主要复习了Python中的四种主要容器:字符串、列表、元组和字典,强调了它们的特点。字符串是不可变的字符编码序列,列表是可变的变量序列,元组同样是不可变的序列,而字典是可变的键值对存储。此外,还介绍了如何在这些数据结构间进行相互转换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

复习
容器
1. 种类及特点
字符串:存储字符编码,不可变,序列
列表:存储变量,可变,序列
元组:存储变量,不可变,序列
字典:存储键值对,可变,散列
集合:存储键,可变,散列
2. 相互转换
? --> 列表 list()
? --> 元组 tuple()
? --> 字典 dict()
? --> 集合 set()
? --> 字符串 “连接符”.join(?)
3. 内存图

"""
    列表 推导式
        [处理变量 for 变量 in 可迭代对象 if 条件]
    字典 推导式
        {处理变量 : 处理变量  for 变量 in 可迭代对象 if 条件}
    集合 推导式
        {处理变量 for 变量 in 可迭代对象 if 条件}
    适用性:
        根据可迭代对象,构建容器时.
"""
# 需求1:range(10)  --> key:0-9   value: key的平方
dict01 = {item: item ** 2 for item in range(10)}
print(dict01)

# 需求2:range(10)  --> key:0-9   value: key的平方
#        只考虑奇数
dict01 = {item: item ** 2 for item in range(10) if item % 2}
print(dict01)

# 练习1:["齐天大圣","八戒","唐三藏"]-->key:字符  vlaue:字符长度
#      {"齐天大圣":4,"八戒":2,"唐三藏":3}
list_names = ["齐天大圣", "八戒", "唐三藏"]
dict_names = {item: len(item) for item in list_names}
print(dict_names)

# 练习2:["张无忌","赵敏","周芷若"] [101,102,103]
#      {"张无忌":101,"赵敏":102,"周芷若":103}
list_names = ["张无忌", "赵敏", "周芷若"]
list_rooms = [101, 102, 103]
dict_infos = {list_names[i]: list_rooms[i] for i in range(len(list_names))}
print(dict_infos)

# 练习3:将练习2的字典,key 与 value 颠倒
#       {101:"张无忌",102:"赵敏",103:"周芷若"}
dict_infos2 = {v: k for k, v in dict_infos.items()}
print(dict_infos2)
"""
    for for
    练习:exercise02
"""

# 外层循环控制行
for r in range(3):  # 0      1      2
    # 外层循环控制列
    for c in range(4):  # 0123   0123   0123
        print("老王", end=" ")
    print()  # 换行

"""
    4行5列
    *****
    #####
    *****
    #####
"""
for r in range(4):
    for c in range(5):
        if r % 2 !=0:
            print("*",end = "")
        else:
            print("#",end = "")
    print()


for r in range(4):
    for c in range(5):
        if c % 2 !=0:
            print("*",end = "")
        else:
            print("#",end = "")
    print()

"""
    推导式嵌套
        练习:exercise08
"""

list_fruits = ["香蕉", "苹果", "哈密瓜"]
list_drinks = ["可乐", "雪碧", "牛奶", "咖啡"]
# list_result = []
# for fruit in list_fruits:
#     for drink in list_drinks:
#         list_result.append(fruit + drink)
list_result = [fruit + drink for fruit in list_fruits for drink in list_drinks]
print(list_result)

"""
    for for 练习
"""
# 二维列表
list01 = [
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12],
]
# -- 打印第三行第二列数据      [行索引][列索引]
print(list01[2][1])

# -- 从右向左,打印第二行数据(一行一个)
for i in range(len(list01[1])-1,-1,-1):
    print(list01[1][i])

# -- 从上向下,打印第三列数据(一行一个)
# [0][2] [1][2] [2][2]
for i in range(len(list01)):
    print(list01[i][2])

# -- 将二维列表以表格状打印出来
# 1 2 3 4
# for r in range(len(list01)):
#     for c in range(len(list01[r])):
#         print(list01[r][c],end = " ")
#     print()

for line in list01:
    for item in line:
        print(item,end = " ")
    print()
"""
    矩阵转置
        算法:将list01中每列,存储到list02中每行
"""
list01 = [
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12],
]

list02 = []
# list01[0][0]
# list01[1][0]
# list01[2][0]

for c in range(len(list01[0])):
    line = []
    for r in range(len(list01)):
        line.append(list01[r][c])
    list02.append(line)

print(list02)
"""
    函数
"""


# 代码的重复,是万恶之源

# 创建函数
def attack():
    """
        攻击
    """
    print("直拳")
    print("勾拳")
    print("侧踹")


# 参数:调用者  给  创建者 传递的信息
#      创建者 要求 调用者 提供的信息
def attack_repeat(count):  # 形式参数
    """
        重复攻击
    :param count:  int类型的 攻击次数
    """
    for __ in range(count):
        attack()


# 调用函数
attack()
attack_repeat(3)  # 实际参数
attack_repeat(10)

"""
    函数返回值
        语法

    函数创建者 给 调用者 传递的结果
"""

def func01():
    print("func01执行喽~")
    return 100 # return 数据

re = func01()

print(re)

def func02():
    print("func02执行喽~")
    # return  # return后没有数据或者没有return ,默认为None

re = func02()
print(re)

def func03():
    print("func03执行喽~")
    return # 退出函数
    print("func03又执行喽~")

func03()
"""
    函数返回值
        应用

    设计思想:小而精
"""
# 需求:定义函数,两个数值相加.

def add(number01,number02):
    """
        两个数值相加
    :param number01: 数值1
    :param number02: 数值2
    :return:数值类型,相加的结果
    """
    result = number01 + number02
    return result

# 测试
n1 = float(input("请输入第一个数字:"))
n2 = float(input("请输入第二个数字:"))
re = add(n1,n2)
print("结果是:"+str(re))



"""
    思想:
        将第一位元素,与后面元素进行比较,发现更小的则交换
           二
           三
           ...
"""

list01 = [4, 54, 5, 6, 7, 8, 3]

# list01[0]  list01[1]
# list01[0]  list01[2]
# list01[0]  list01[3]
# list01[0]  list01[4]
# for i in range(1,len(list01)):
#     # list01[0] 与 list01[i] 进行比较
#     pass

# list01[1]  list01[2]
# list01[1]  list01[3]
# list01[1]  list01[4]
# list01[1]  list01[5]
# for i in range(2, len(list01)):
#     # list01[1] 与 list01[i] 进行比较
#     pass

for r in range(len(list01) - 1):  # 0       1
    for c in range(r + 1, len(list01)):  # 123..   234..
        if list01[r] > list01[c]:
            list01[r], list01[c] = list01[c], list01[r]

print(list01)

"""
    list01 = [34,8,56,9,8,9]
    判断列表中是否具有相同元素True  False
    思想:
    将第一位元素,与后面元素进行比较,发现相同则打印结论
       二
       三
    如果所有元素比较后,也没有发现相同,则打印结论。
"""
list01 = [34, 8, 56, 9, 8, 9]
result = False  # 假设结论是没有重复
# 取数据
for r in range(len(list01) - 1):
    # 作比较
    for c in range(r + 1, len(list01)):
        if list01[r] == list01[c]:
            result = True
            break  # 退出一层循环
    if result:
        break

print(result)

"""
    list01 = [34, 8, 56, 9, 8, 9]
    删除列表中相同元素(重复元素只保留一个)
    要求:不使用集合
    算法:
        从后向前判断,如果相同元素(从前向后判断),则删除后面的元素.
"""
list01 = [34, 8, 56, 9, 8, 9]
# 取数据
for r in range(len(list01)-1,-1,-1):
    # 作比较
    for c in range(r):
        if list01[r] == list01[c]:
            del list01[r]
            break # 如果删除了后面元素,则无需继续用当前元素比较了

print(list01)
# 色子 1 -- 6
# 色子 1 -- 6
# 色子 1 -- 6
# 将3个色子所有组合数存储到列表中

# list_result = []
# for x in range(1,7):#                 1           2
#     for y in range(1,7):#       1      2    ..
#         for z in range(1,7):#123456  123456
#             list_result.append((x,y,z))

list_result = [(x, y, z) for x in range(1, 7) for y in range(1, 7) for z in range(1, 7)]
print(list_result)

# 练习1: 定义函数,在终端中打印列表一个元素一行)
#  list01 = [43,4,5,78]
#  list02 = [76,6,579]

def print_list(list_target):
    """
        打印列表,将列表每个元素打印在终端中(一行一个)
    :param list_target:list类型,需要打印的列表
    """
    for item in list_target:
        print(item)


list01 = [43, 4, 5, 78]
list02 = [76, 6, 579]
print_list(list01)
print_list(list02)

# 练习:定义函数,在终端中根据边长打印矩形
#  day05/day04_exercse/exercise01

def print_rectangle(lenght,char):
    """
        打印矩形
    :param lenght:int类型 边长
    """
    print(char * lenght)
    for __ in range(lenght - 2):
        print(char + " " * (lenght - 2) + char)
    print(char * lenght)

# 测试
print_rectangle(5,"*")
print_rectangle(10,"$")
"""
    改造 day04/exercise01 代码
    定义函数,计算整数每位相加和
"""


def each_unit_sum(number):
    """

    :param number:
    :return:
    """
    sum_value = 0
    for item in str(number):
        sum_value += int(item)
    return sum_value


# 测试
print(each_unit_sum(1234))

"""
    改造 day03/exercise04 代码
    定义函数,根据成绩判断等级.
"""


# def calculate_score_level(score):
#     if score > 100 or score < 0:
#         return "不在范围内0-100"
#     elif 90 <= score:
#         return "优秀"
#     elif 80 <= score:
#         return "良好"
#     elif 60 <= score:
#         return "及格"
#     else:
#         return "不及格"

# 因为return 退出函数,所以无需else语句
def calculate_score_level(score):
    if score > 100 or score < 0:
        return "不在范围内0-100"
    if 90 <= score:
        return "优秀"
    if 80 <= score:
        return "良好"
    if 60 <= score:
        return "及格"
    return "不及格"

print(calculate_score_level(95))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值