目录
1、数据类型
数据类型 | 描述 | 举例 |
int | 整型 | 1,-1,100 |
float | 浮点型 | 3.14,-0.1,2.0 |
bool | 布尔型 | True,False |
complex | 复数型 | 1+2j,-3+4j |
str | 字符串 | “hi” |
list | 列表 | [1,2,'a',True] |
tuple | 元组 | (1,2,'a',True) |
set | 集合 | {1,2,3,4} |
dict | 字典 | {
} |
2、 运算符
①算术运算符
运算符 | 描述 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
// | 取整除 [对于负数运算,// 的结果总是向下取整] |
% | 取余数 |
** | 幂 |
②赋值运算符
运算符 | 描述 |
= | 赋值 |
+= | 加等于【a+=5 等价于 a=a+5】 |
-= | 减等于 |
*= | 乘等于 |
/= | 除等于 |
//= | 整除等于 |
%= | 模等于 |
**= | 幂等于 |
③比较、逻辑运算符
运算符 | 描述 |
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
and | 逻辑与 |
or | 逻辑或 |
not | 逻辑非 |
3、字符串
①字符串之间可以拼接:str3 = str1+str2
②字符串和整形可以使用*进行重复字符串拼接:s = str * 5
③字符串和变量之间不能进行其他运算
4、输出输入函数
①输出函数:print()
②输入函数:input()【input输入的数据都为str
字符串类型】
"""
超市买苹果计算金额
需求:
● 收银员输入苹果的价格price,单位:元/斤
● 收银员输入用户购买苹果的重量weight,单位:斤
● 计算并输出付款金额:xxx元
"""
price = float(input('请输入苹果单价:'))
weight = float(input('请输入购买苹果重量:'))
all = price * weight
print("付款金额:%。2f元"%money)
"""
● 在控制台依次提示用户输入:姓名name、公司com、职位title、电话telephone、邮箱email
● 按格式输出
"""
name = input('请输入姓名:')
com = input('请输入公司名:')
title = input('请输入职务:')
telephone = input('请输入电话:')
email = input('请输入邮箱:')
# 输入50个*
print('*'*50)
# 公司名称
print('公司名称:%s'%com)
# 输出空行
print()
# 姓名(职位)
print('%s(%s)'%(name,title))
print()
print('电话:%s'%telephone)
print('邮箱:%s'%email)
print('*'*50)
5、控制语句
①if语句
"""
if 条件:
条件成立时,要做的事情
……
"""
age = int(input('请输入你的年纪:'))
# if判断
if age >= 18:
print('恭喜你,你成年啦')
②if...else...语句
"""
if 要判断的条件:
条件成立时,要做的事情
……
else:
条件不成立时,要做的事情
……
"""
age = int(input('请输入你的年纪:'))
# if判断
if age > =18:
print('成年人')
else:
print('小孩子')
③if...elif...else语句
"""
if 条件1:
条件1满足执行的代码
……
elif 条件2:
条件2满足时,执行的代码
……
elif 条件3:
条件3满足时,执行的代码
……
else:
以上条件都不满足时,执行的代码
……
"""
holiday_name = input('请输入节日名称')
if holiday_name == '情人节':
print('买玫瑰/看电影')
elif holiday_name == '平安夜':
print('买苹果/吃大餐')
elif holiday_name == '生日':
print('买蛋糕')
else:
print('每天都是节日,每天一个红包')
6、循环语句
①while语句
# 1.定义循环变量
i = 1
# 2.使用while判断条件
while i <= 10000:
# 要重复执行的代码
print('我要玩铲铲')
# 3.修改循环变量,如果忘记修改循环变量值会陷入死循环
i += 1
"""
死循环写法:
while True:
pass (空语句,保证语法完整无实际意义)
"""
"""
打印倒三角:
"""
n = int(input("请输入打印的行数: "))
while n >= 0:
print("*" * n)
n -= 1
②while语句嵌套循环:
# 外层循环
i = 0
while i < 5:
# 内层循环
j = 0
while j < 3:
print(j)
j += 1
i += 1
"""
实现正序九九乘法表:
"""
row = 1
while row < 10:
# 这一行,需要操作n次 定义循环
# 列循环:操作的次数
col = 1
while col <= row:
# 不需要换行
# 列*行=数据
print('%d * %d = %d'%(col,row,col*row),end='\t') # 默认会有换行
col += 1
# 换行
print()
row += 1
"""
倒序九九乘法表
"""
row = 9
while row > 0:
# 这一行,需要操作n次 定义循环
# 列循环:操作的次数
col = 1
while col <= row:
# 不需要换行
# 列*行=数据
print('%d * %d = %d'%(col,row,col*row),end='\t') # 默认会有换行
col += 1
# 换行
print()
row -= 1
③for循环
"""
for 临时变量 (not)in 列表或字符串等可迭代对象:
执行的代码
"""
str = 'hello world'
# ele普通变量 接收容器中的元素
for s in str:
print(s)
"""
水仙花数
"""
for a in range(100,1000):
m = a//100;
n = a//10%10
t = a%10
if(m*m*m + n*n*n + t*t*t) == a:
print(a)
"""
for、while循环也可以加else
for 变量 in 容器:
循环体代码
else:
没有通过break退出循环, 循环结束后, 会执行的代码
"""
str = 'hello world'
for ele in str:
print(ele)
else:
print('执行了else语句')
"""
判断登录密码hhew2383dW_fkf&E@^是否合法。
1. 密码必须是数字、字母(大小写都可以)、和下划线,否则不合法
2. 如果密码合法,就输出"密码合法"
"""
psw = 'hhew2383dW_fkf&E@^'
container = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'
for i in psw:
if i not in container:
print('密码不合法,不可包含%s' % ele)
break
else:
print('密码合法')
④break和continue
- break:某一条件满足时,不再执行循环体中后续代码,并退出循环
- continue:某一条件满足时,不再执行本次循环体中后续代码,但进入下一次循环判断
7、补充内容
①eval()
将一个字符串作为 Python 表达式进行解析和执行,然后返回表达式的值。它通常用于动态地执行代码,但使用时需要非常谨慎,因为它可能会带来安全风险。
"""
eval(expression, globals=None, locals=None)
"""
# 简单的数学表达式
result = eval("2 + 3 * 4")
print(result) # 输出:14
# 使用变量
x = 5
y = 10
result = eval("x + y")
print(result) # 输出:15
# 使用自定义函数
def add(a, b):
return a + b
result = eval("add(x, y)")
print(result) # 输出:15
②random.random()
Python 的一个内置模块,用于生成随机数和执行随机操作。它提供了多种函数,可以生成随机整数、浮点数、随机选择序列中的元素等
import random
print(random.random()) # 输出类似 0.4795411116451254
print(random.randint(1, 10)) # 输出 1 到 10 之间的随机整数
print(random.randrange(1, 10, 2)) # 输出 1 到 10 之间的奇数
print(random.uniform(1.0, 5.0)) # 输出 1.0 到 5.0 之间的随机浮点数
my_list = [1, 2, 3, 4, 5]
print(random.choice(my_list)) # 输出列表中的一个随机元素
my_list = [1, 2, 3, 4, 5]
weights = [1, 1, 1, 1, 10] # 数字 5 的权重更高
print(random.choices(my_list, weights, k=3)) # 输出 3 个随机元素,数字 5 更容易被选中
my_list = [1, 2, 3, 4, 5]
print(random.sample(my_list, 3)) # 输出 3 个不重复的随机元素
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list) # 输出类似 [3, 5, 1, 4, 2]
random.seed(42) # 设置固定种子
print(random.randint(1, 10)) # 每次运行结果相同
③range()
创建整数列表,相当于左闭右开区间,[1,10)
包含1不包含10
# 定义0到10的区间(包含0,不包含10)
arr = range(0, 10)
# 定义0到10的区间(包含0,不包含10)
arr = range(10)
# 定义从10到1的区间,参数分别代表 start开始, stop结束, step步长
arr = range(10, 0, -1)
8、函数基础
①函数的定义
def 函数名():
函数封装的代码
②函数的调用
函数名()
③多参数、多返回值的函数
def calc(a, b):
'''
求a+b以及a-b的结果
:param a:
:param b:
:return: 结果的元组
'''
sum = a + b
sub = a-b
return sum, sub
# 分别接收和以及差
sum, sub = calc(10, 20)
④函数的四种类型
#无参数无返回值
def say_hello():
print('hello')
#无参数有返回值
import random
def get_temp():
return random.randint(0,100)
#有参数无返回值
def say_hello(name):
print('hello %s'%name)
#有参数有返回值
def sum(a, b):
return a + b
⑤局部变量和全局变量
def func1():
# 局部变量
b = 20
print('hello%d' % b)
# 全局变量
m = 10
n = 20
def func():
# 函数内访问全局变量
print(m)
# 定义全局变量
m = 10
def func():
# 使用global声明全局变量,函数内修改全局变量
global m
# 将m修改成20
m = 30
print("函数内部 m=", m)
9、list列表
python中的高级数据类型:str、list、tuple、set、dict
高级数据类型的特点:
- 都是一个序列 sequence,也可以理解为 容器
- 获取某一个元素
数据集[index]
(集合除外,无序的) - 通过
for
循环遍历 - 都可以计算长度、最大/最小值、比较、删除
- 连接 + 和 重复 *
- 切片,获取容器一部分
列表的定义
namesList = ['孙颖莎','王楚钦','薯条派']
访问、增加、删除、修改、查询列表的元素
索引值从0开始,元素在list中的位置编号,又可以被称为下标
namesList = ['孙颖莎','王楚钦','薯条派']
# 获取第二个人
name = namesList[1]
print(name)
# 遍历列表
for name in namesList:
print(name)
# 通过append增加新元素
namesList.append('番茄酱')
print(namesList)
# ['孙颖莎','王楚钦','薯条派','番茄酱']
# 删除番茄酱
namesList.pop(3)
print(namesList)
# ['孙颖莎','王楚钦','薯条派']
# 删除薯条派
namesList.remove('薯条派')
print(namesList)
# namesList = ['孙颖莎','王楚钦']
namesList = ['孙颖莎','王楚钦','番茄酱']
# 将番茄酱修改成薯条派
namesList[2] = '薯条派'
print(namesList)
## ['孙颖莎','王楚钦','薯条派']
namesList = ['孙颖莎','王楚钦','薯条派']
# 查找第二个元素
ele = namesList[1]
print(ele)
namesList = ['孙颖莎','王楚钦','薯条派']
# 查找元素孙颖莎的索引
index = namesList.index('孙颖莎')
print(index)
列表的排序
ageList = [90,10,30,20,50,70]
# 从小到大 升序
ageList.sort()
print(ageList)
ageList = [90,10,30,20,50,70]
# 从大到小 降序排序
ageList.sort(reverse=True)
print(ageList)
ageList = [90,10,30,20,50,70]
# reverse 将列表进行反转
ageList.reverse()
print(ageList)
列表的嵌套
students = [
['Ada','Bob','Cindy'],
['Momo','Sunny']
]
# 查询Cindy
student = students[0][2]
# 修改Momo为Lion
students[1][0] = 'Lion'
10、tuple元组
元组与列表类似,也是容器的一种,不同之处在于元组的元素不能修改
元组的定义
names_tuple = ('Ada','Lion','Sunny')
注意:一个元素的元组定义需要在元素后加上,
# 错误定义方式 ❌
names_tuple = ('Ada')
# 正确定义方式 ✅
names_tuple = ('Ada',)
元组的特点和作用
"""
自动组包:t的类型是元组类型
"""
t = 'Ada','Lion','Sunny'
"""
自动解包:元组t会自动解包分别赋值给name1、name2、name3三个变量
注意:左边变量的个数一定要和元组的元素个数保持一致
"""
# 定义元组
t = ('Ada','Lion','Sunny')
# 变量赋值
name1,name2,name3 = t
"""
交换数据:利用元组的组包和解包特点,快速交换两个数据
"""
a = 10
b = 20
# 交换a和b
a,b = b,a
"""
让列表不可修改:希望别人不要修改列表可以把列表转换成元组,这样就变成了不可变的数据
"""
lst = [10, 20, 30]
# 将列表转换成元组
tp = tuple(lst)
# 不可执行如下类似操作
tp[0] = 111
tp.append(222)
运行执行会报出如下错误:TypeError: 'tuple' object does not support item assignment
11、名片管理系统
需求:
- 程序启动,显示名片管理系统欢迎界面,并显示功能菜单
- 用户用数字选择不同的功能:新建名片、显示名片、查询名片、退出系统
- 用户名片需要记录用户的姓名、电话、QQ、邮件
- 显示名片可以列举出所有已经保存的名片
- 如果查询到指定的名片,用户可以选择修改、删除名片
代码实现:
def menu():
print('*' * 50)
print('欢迎使用【名片管理系统】V1.0')
print()
print('1.新建名片')
print('2.显示全部')
print('3.查询名片')
print()
print('0.退出系统')
print('*' * 50)
choice = input('请输入选择:')
def add():
print('您选择的功能是: 1.新建名片')
name = input('请输入名字:')
phone = input('请输入手机号:')
QQ = input('请输入QQ号:')
Email = input('请输入邮箱:')
card = [name, phone, QQ, Email]
cardList.append(card)
def showAll():
print('您选择的功能: 2.显示全部')
print('姓名\t电话\tQQ\t邮件')
print('-' * 50)
for card in cardList:
print('%s\t%s\t%s\t%s' % tuple(card))
print('-' * 50)
def search():
print('您选择的功能是: 3查询名片')
name = input('请输入查询的姓名:')
for card in cardList:
if card[0] == name:
handleCard(card)
break
else:
print('没有找到对应的用户:%s' % name)
def handleCard(card):
while True:
type = int(input('请输入对名片的操作: 1.修改/ 2.删除/ 0.返回上一级:'))
if type == 1:
modifyCard(card)
break
elif type == 2:
deleteCard(card)
break
elif type == 0:
break
else:
print('输入错误,请重新输入')
def modifyCard(card):
card[0] = input('请输入姓名:')
card[1] = input('请输入电话:')
card[2] = input('请输入QQ:')
card[3] = input('请输入邮箱:')
def deleteCard(card):
cardList.remove(card)
def main():
global cardList
cardList = [] # 名片数据列表
while True:
menu()
type = int(input('请输入执行的操作:'))
if type == 1:
add()
elif type == 2:
showAll()
elif type == 3:
search()
elif type == 0:
break
if __name__ == '__main__':
main()