推倒式:
列表 推导式:
[处理变量 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)
推导式嵌套
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)
函数
pycharm快捷键:
Ctrl + P 参数信息(在方法中调用参数)
Ctrl + Q 快速查看文档
Ctrl + Alt + M 提取方法
定义
1. 用于封装一个特定的功能,表示一个功能或者行为。
2. 函数是可以重复执行的语句块, 可以重复调用。
作用
提高代码的可重用性和可维护性(代码层次结构更清晰)。
定义函数
1. 语法:
def 函数名(形式参数):
函数体
2. 说明:
def 关键字:全称是define,意为”定义”。
函数名:对函数体中语句的描述,规则与变量名相同。
形式参数:方法定义者要求调用者提供的信息。
函数体:完成该功能的语句。
3. 函数的第一行语句建议使用文档字符串描述函数的功能与参数。
调用函数
1. 语法:函数名(实际参数)
2. 说明:根据形参传递内容。
返回值
1. 定义:
方法定义者告诉调用者的结果。
2. 语法:
return 数据
3. 说明:
return后没有语句,相当于返回 None。
函数体没有return,相当于返回None。
创建函数
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))
练习1:
# 练习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)
练习2:
"""
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()
练习3:
"""
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()
练习4:
"""
矩阵转置
算法:将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)
练习5:
"""
思想:
讲第一个元素,与后面元素进行比较
二
三
...
"""
list01 = [4, 54, 5, 6, 7, 8, 3]
for r in range(len(list01) - 1):
for c in range(r + 1, len(list01)):
if list01[r] > list01[c]:
list01[r], list01[c] = list01[c], list01[r]
print(list01)
练习6:
"""
list01=[34,8,56,9,8,9]
判断列表中是否具有相同元素 True Flase
思想:
讲第一个元素,与后面元素进行比较,发现相同则打印结论
二
三
...
如果所有元素比较后,也没有发现相同,则打印结论
"""
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)
练习7:
"""
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 # 如果删除了后面元素,则无需继续用当前元素比较了 h
print(list01)
练习8:
"""
在终端中打印
list01=[43,4,5,78]
list02=[76,6,579]
"""
def print_list(list_target):
"""
打印列表,将列表每个元素打印在终端中(一行一个)
:param list_target:
:return:
"""
for item in list_target:
print(item)
list01 = [43, 4, 5, 78]
list02 = [76, 6, 579]
print_list(list01)
print_list(list02)
练习9:
"""
3. 在终端中获取一个矩形边长,打印矩形。
例如:4
****
* *
* *
****
例如:6
******
* *
* *
* *
* *
******
定义函数,在终端中根据边长打印矩形
"""
def rectangle(border, char):
"""
打印矩形
:param border: int类型 边长
:return:
"""
print(char * border)
for __ in range(border - 2):
print(char + " " * (border - 2) + char)
print(char * border)
rectangle(6,"$")
练习10:
"""
练习:
获取一个任意数 123456
输出每位相加和 1+2+3+4+5+6+.....
"""
def each_unit_sum(number):
"""
每位相加
:param number: 任意数
:return: 相加和
"""
h = 0
for item in str(number):
h += int(item)
return h
re = each_unit_sum(123565)
print(re)
练习11:
"""
练习:
获取成绩
判断等级(优秀 良好 及格 不及格 不在范围内0-100 )
"""
def calculate_score_levelresult(result):
if result < 0 or result > 100:
return "不在范围内"
if result < 60:
return "不及格"
if result < 80:
return "及格"
if result < 90:
return "良好"
return "优秀"
result = int(input("请输入一个成绩:"))
re = calculate_score_levelresult(result)
print(re)