变量
变量 | 数据在内存中的一个名称 |
定义变量 | 变量名 = 值 |
命名规则 | A.由数字、字母、下划线组成,不能数字开头 B.不能使用内置关键字 C.严格区分大小写 |
数据类型 | int,float / true,false / str / list / tuple / set / dict |
检测数据类型的方法 | type(变量名) |
输出
格式化输出 | %s / %d / %f (注:%06d,%.2f) |
输出 | f '{变量名}' |
转义字符 | \n:换行 \t :tab键 |
结束符 | print('输出的内容', end="\n") |
举例:我的名字是TOM,今年18岁
print('我的名字是%s,今年%d岁' % (name, age))
print(f'我的名字是{name},我今年{age}岁')
输入
语法 | 变量 = input("内容") |
特点 | 1.等待用户输⼊ 2.输入数据当字符串 3.定义变量 |
转换数据类型
语法:int(变量) / float(变量) / str(变量) / eval(变量) / tuple(变量) / list(变量)
举例:转换为float
num1 = 1
print(type(float(num1)))
运算符
运算符 | + 、- 、* 、/ 、// 、% 、** 、() |
赋值 | 1.= 2.多个变量量赋值:num1, float1, str1 = 10, 0.5, 'hello world' 3.多变量量赋相同值:a = b = 10 |
复合赋值运算符 | += 、-= 、*= 、/= 、//= 、%= 、**= (c += a 等价于 c = c + a) |
比较运算符: | == 、!= 、> 、< 、>= 、<= (注:结果为真或假) |
逻辑运算符 | and 、or 、 not (注:结果为真或假) |
数字间的逻辑 | and结果为最后非0数 , or结果为第一个非0数 |
举例:
c = 10
c += 1 + 2
print(c) # 输出13
条件语句
if语法 | if 条件: 条件成立执行 |
if...else... | if 条件: 条件成立执行 else: 条件不成立执行 |
多重判断 | if 条件1: 条件1成立执行 elif 条件2: 条件2成立执行 else: 以上条件都不成立 |
嵌套(条件1成立才会执行条件2) | if 条件1: 条件1成立执行 if 条件2: 条件2成立执行 |
三目运算符 | 条件成立执行 if 条件 else 条件不成立执行 |
举例训练:猜拳游戏
import random
people_mora = int(input('准备出拳什么,0——石头,1——剪刀,2——布:'))
computer_mora = random.randint(0, 2)
print(computer_mora)
if ((people_mora == 0) and (computer_mora == 1)) or (((people_mora == 1) and (computer_mora == 2)) or ((people_mora == 2)and(computer_mora == 0))):
print('赢')
elif people_mora == computer_mora:
print('平局')
else:
print('输')
循环
while | while 条件: 条件成立重复执行 |
嵌套 (内循环结束后执行外循环,直到外循环结束,此处大循环才结束) | while 条件1: 条件1成立执行 while 条件2: 条件2成立执行 |
for(遍历) | for 临时变量 in 序列: 重复执行 |
while...else | while 条件: 条件成立重复执行 else: 循环正常结束执行 |
for...else | for 临时变量 in 序列: 条件成立重复执行 else: 循环正常结束执行 |
break和continue | break(终止循环)continue(跳过这次循环) continue:如果本次循环是计数,那么continue前需加1,否则陷入死循环 |
训练举例:九九乘法表
j = 1
while j <= 9:
i = 1
while i <= j:
print(f'{i} * {j} = {i * j}', end='\t')
i += 1
print()
j += 1
字符串
字符串特征 | 不可变类型 """支持换行""" 举例:输出 I'm Tom 方法1:使用双引号 "I'm Tom" 方法2:使用转义字符 'I\'m Tom' |
下标(查找1个数据) | 变量[下标](下标以0开始) |
切片(查找多个数据) | 变量[开始下标:结束下标:步长] (注:不含结束下表,步长默认1,下标为负数:倒数第几,倒数开始为1,步长为负数:倒序) |
查找
变量.find('查找的数据', 开始下标, 结束下标) | 开始结束可省略,有则返回下标,无则返回-1 |
变量.index('查找的数据', 开始下标, 结束下标) | 有则返回下标,无则报错 |
查找方向从右侧开始 | rfind(),rindex() |
查找出现的次数 | 变量.count('查找的数据', 开始下标, 结束下标) |
修改
替换 | 变量.replace(旧数据, 新数据, 替换次数) |
分割 | 变量.split(分割字符, 分割字符出现的次数) ——返回数据个数为分割次数+1 ——如果分割字符是原有字符串中的子串,分割后则丢失该子串。 |
合并 | 合并字符.join(多字符串组成的变量) ——如:list1 = ['chuan', 'zhi', 'bo', 'ke'] |
句首单词的首字母变大写 | 变量.capitalize() |
句子的每个首字母变大写 | 变量.title() |
大写转小写 | 变量.lower() |
小写转大写 | 变量.upper() |
删除空白符 | 变量.lstrip()——左 变量.rstrip()——右 变量.strip()——两侧 |
对齐并填充 | 变量.ljust(长度,填充字符)——左 变量.rjust(长度,填充字符)——右 变量.center(长度,填充字符)——中 |
判断
返回真或假
以....开头 | 变量.startswith('数据',开始下标,结束下标) |
以....结尾 | 变量.endswith('数据',开始下标,结束下标) |
全为字母 | 变量.isalpha() |
全为数 | 变量.isdigit() |
数+字母 | 变量.isalnum() |
全为空白 | 变量.isspace() |
列表
列表的格式:
[数据1, 数据2, 数据3, 数据4......]
数据类型:可变类型数据
查找
下标 | 变量[下标] |
index():返回下标 | 变量.index('查找的数据', 开始下标, 结束下标) |
count():统计次数 | 变量.count('查找的数据', 开始下标, 结束下标) |
len():数据的个数 | len(变量) |
in、not in:判断是否存在(true、false) | '查找的数据' in 变量 |
增加
append():结尾加数据,数据看为整体 | 变量.append(数据) |
extend():结尾加数据,数据看作分开,逐一添加 | 变量.extend(数据) |
insert():指定位置新增数据 | 变量.insert(位置下标, 数据) |
删除
del:删除列表 | del 变量 |
del:删除指定数据 | del 变量[下标] |
pop():删除指定下标数据 | 变量.pop(下标) |
remove():移除某个数据 | 变量.remove(数据) |
clear():清空列表 | 变量.clear() |
修改
修改指定下标数据 | 变量[下标] = 值 |
逆置:reverse() | 变量.reverse() |
排序:sort() | 变量.sort( key=None, reverse=False) ——reverse = True 降序, reverse = False 升序(默认) ——括号中不填就为默认值 |
复制
copy():需准备新的变量储存 | 变量.copy() |
列表的循环遍历:
name_list = ['Tom', 'Lily', 'Rose']
for i in name_list:
print(i)
列表的嵌套:
name_list = [['⼩小明', '⼩小红', '⼩小绿'], ['Tom', 'Lily', 'Rose'], ['张三', '李李四',
'王五']]
print(name_list[2][1])
#李四
随机分配办公室:
import random
# 准备数据
teachers = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
offices = [[], [], []]
# 分配老师办公室,取到列表,遍历老师列表数据(循环加入)
for name in teachers:
num = random.randint(0,2)
offices[num].append(name)
# 办公室编号
i = 1
for office in offices:
print(f'办公司{i}的人数为{len(office)},老师分别是:')
for name in office:
print(name)
i += 1
元组(tuple)
应用场景:可以存储多个数据,元组内的数据是不能修改的。
元组的格式:(数据1, 数据2, 数据3, 数据4......)
注意:定义的元组只有一个数据,那么这个数据后面要添加逗号
举例:2 = (10,)
查找
下标 | 变量[下标] |
index():返回下标 | 变量.index('查找的数据', 开始下标, 结束下标) |
count():统计次数 | 变量.count('查找的数据', 开始下标, 结束下标) |
len():数据的个数 | len(变量) |
修改
注意:元组内的直接数据如果修改则立即报错,如有列表,列表里的数据是可以修改
字典(dict)
字典:键值对出现,不支持下标
字典类型:可变类型
字典的格式:
dict = {key1: value1,key2: value2}
dict = {} ——空字典
dict = dict() ——空字典
举例:dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
字典的常见操作
增/改 | 变量[key] = 值 ——key存在则修改key对应的值;如果key不存在则新增键值对 |
删 | del 变量[key] |
清空 | 变量.clear() |
查值 | 变量[key] |
变量.get(key, 默认值) ——查找的key不存在返回默认值,如果省略默认值,则返回 None。 | |
查所有key | 变量.keys() |
查所有值 | 变量.values() |
查键值对 | 变量.items() |
字典的循环遍历
遍历key | for 临时变量 in 变量.keys(): print(临时变量) |
遍历value | for 临时变量 in 变量.values(): print(临时变量) |
遍历元素 | for 临时变量 in 变量.items(): print(临时变量) |
遍历键值对 | for key, value in 变量.items(): print(f'{key} = {value}') |
集合
集合的格式:
set = {数据1, 数据2, 数据3, 数据4......}
set = set() ——空集合
集合的特点:
1. 去重
2. 无序,不支持下标
增加
add() | 变量.add(数据) |
update():追加的数据是序列 | 变量.update(序列数据) |
删除
remove():删除指定数据 | 变量.remove(数据) |
discard():删除指定数据 | 变量.discard(数据) |
pop():随机删除某个数据,返回这个数据 | 变量存储 = 变量.pop() |
查找
存在 | 数据 in 变量 |
不存在 | 数据 not in 变量 |
公共操作
运算符
运算符 | 描述 | 支持的容器类型 |
+ | 合并 | 字符串、列表、元组 |
* | 复制 | 字符串、列表、元组 |
in | 元素是否存在 | 字符串、列表、元组、字典 |
not in | 元素是否不存在 | 字符串、列表、元组、字典 |
函数
函数 | 描述 |
len() | 计算容器中元素个数 |
del 或 del() | 删除 |
max() | 返回容器中元素最大值 |
min() | 返回容器中元素最小值 |
range(start, end, step) | 生成从start到end的数字,步长为 step,供for循环使用 —— range()生成的序列不包含end数字 |
enumerate() | enumerate(可遍历对象, start=0) ——start参数用来设置遍历数据的下标的起始值,默认为0 ——列出数据和数据下标,⼀般用在 for 循环当中 |
举例
# 1 3 5 7 9
for i in range(1, 10, 2):
print(i)
list1 = ['a', 'b', 'c', 'd', 'e']
for i in enumerate(list1):
print(i)
for index, char in enumerate(list1, start=1):
print(f'下标是{index}, 对应的字符是{char}')
容器类型转换
元组 | tuple(变量) |
列表 | list(变量) |
集合 | set(变量) ——1. 可以快速去重 2. 不支持下标 |
推导式
列表推导式
[xx for xx in range()]
举例:创建一个0-10的列表
list1 = [i for i in range(10)]
print(list1)
举例:创建0-10的偶数列表(if)
list1 = [i for i in range(10) if i % 2 == 0]
print(list1)
举例:创建列表:[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)](多个for)
list1 = [(i, j) for i in range(1, 3) for j in range(3)]
print(list1)
字典推导式
{xx1: xx2 for ... in ...}
举例:创建字典:字典key是1-5数字,value是这个数字的2次方
dict1 = {i: i**2 for i in range(1, 5)}
print(dict1)
# {1: 1, 2: 4, 3: 9, 4: 16}
举例:将两个列表合并为一个字典
list1 = ['name', 'age', 'gender']
list2 = ['Tom', 20, 'man']
dict1 = {list1[i]: list2[i] for i in range(len(list1))}
print(dict1)
举例:提取字典中目标数据
counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}
# 需求:提取上述电脑数量大于等于200的字典数据
count1 = {key: value for key, value in counts.items() if value >= 200}
print(count1) # {'MBP': 268, 'DELL': 201}
集合推导式
{xx for xx in ...}
举例:创建一个集合,数据为列表list1 = [1, 1, 2]的2次方。
list1 = [1, 1, 2]
set1 = {i ** 2 for i in list1}
print(set1) # {1, 4}
函数
函数的定义:将一段具有独立功能的代码块整合为一个整体并命名,在需要的位置调用这个名称即可完成对应的需求,实现代码重用。
定义函数
def 函数名(参数):
代码1
代码2
调用函数
函数名(参数)
#1. 不同的需求,参数可有可无。
#2. 函数必须先定义后使用。
函数的参数
举例:函数完成两个数的加法运算
# 定义函数时同时定义了接收用户数据的参数a和b,a和b是形参
def add_num2(a, b):
result = a + b
print(result)
# 调⽤用函数时传入了真实的数据10 和 20,真实数据为实参
add_num2(10, 20)
函数的返回值
需要返回结果给用户需要使用函数返回值
举例:制作一个计算器,计算任意两数字之和,并保存结果。
def sum_num(a, b):
return a + b
# 用result变量保存函数返回值
result = sum_num(1, 2)
print(result)
备份【待删】
def info_print():
print('请选择功能————————————————————')
print('1.添加学员')
print('2.删除学员')
print('3.修改学员信息')
print('4.查询学员信息')
print('5.显示所有学员信息')
print('6.退出系统')
print('_'*20)
info = []
def add_info():
"""添加学员"""
new_id = input('学号:')
new_name = input('姓名:')
new_tel = input('电话:')
global info
for i in info:
if new_name == i['name']:
print('该姓名已存在')
return
info_dict = {}
info_dict['id'] = new_id
info_dict['name'] = new_name
info_dict['tel'] = new_tel
info.append(info_dict)
print(info)
def del_info():
del_name = input('删除者的姓名:')
global info
for i in info:
if del_name == i['name']:
info.remove(i)
break
#break停止的是for循环的遍历
# else是循环正常结束后的执行代码
else:
print('该用户不存在')
print(info)
def modify_info():
modify_name = input("输入学员的姓名:")
global info
for i in info:
if modify_name == i['name']:
i['tel'] = input('请输入电话号码:')
break
else:
print('此人不存在!')
print(info)
def search_info():
search_name = input('姓名:')
global info
for i in info:
if search_name == i['name']:
print(f"这个学生的id是{i['id']},这个学生的名字是{i['name']},这个学生的电话是{i['tel']}")
break
else:
print('此人不存在')
def print_all():
print('id\t姓名\t电话')
for i in info:
print(f"{i['id']}\t{i['name']}\t{i['tel']}")
while True:
info_print()
use_num = int(input('请输入序号:'))
if use_num == 1:
add_info()
elif use_num == 2:
del_info()
elif use_num == 3:
modify_info()
elif use_num == 4:
search_info()
elif use_num == 5:
print_all()
elif use_num == 6:
exit_info = input('是否退出:(yes或者no)')
if exit_info == 'yes':
print('已退出')
break
else:
print('输入有误')