元组:用小括号表示,英文为tuple。元组和列表类似,但是定义完不可以改变。
t = ()#因为不可以改变,所以t最终会是一个空元组
t = (1,2,2,1)
print(t[0])#打印第1个元素
print(t.count(2))#打印元组中2的个数
x,y = (1,2)#x为1,y为2
可变和不可变
可变:列表、字典、集合 不可变:字符串、整数、浮点数、布尔值、元组
可变类型数据:当数据发生变化时,地址不发生变化 不可变类型数据:当数据发生变化时,地址发生变化
集合:没有重复元素并且无顺序的数据结构。英文为set
s = set({})#要注意,定义集合必须带set,否则会被认为是字典
增加:
s.add(1)
删除:
s.remove(1)#根据值删除,如果删除元素不存在会报错
s.pop()#随机删除
s.discard(1)#删除,如果元素不存在,不报错
s.clear()#清空
长度:
print(len(s))
元素是否存在:
print(1 in s)
合并:
s.update([6,7])#列表
s.update((6.7))#元组
s.update({'6':7})#字典
s.update ({6,7})#新的集合
交集、并集、差集:
s1 = {1,2,3}
s2 = {2,3,4}
print(s1&s2)#交集
print(s1|s2)#并集
print(s1-s2)#差集
所以,可利用集合的性质去重复:
l = [1,2,3,4,5,5,2,3]
print(list(set(l)))#把列表转化成集合再转化回列表并打印
注意事项
t = (1,)#元组只有一个元素时,需要加逗号
s = set({})#创建空集合要用set
#字典的键不能用可变类型数据
字符串的常用命令:
s = ' Fender '
s.count('e')#'e'在字符串s中出现的次数
s.replace('Fen','Gib')#从左到右替换。最后可加替换次数s.replace('e','a',1)默认为全部替换
s.split('e')#分割
s.startswith('G')#会打印出True或False。判断以什么开头
s.endswith('r')#以什么结尾
s.strip()#去掉两边的空格s.lstrip,s.rstrip分别去左右
s1 = '*'
print(s + s1)#将两个字符串合起来
print(s1.join(s))#用s1分隔开s
print(s.find('e'))#查询字符的索引s.rfind为从右往左查。不存在返回-1
print(s.index('e'))#和find相同,但不存在会报错
函数
是一系列语句的集合 作用:让代码的可读性更高,实现代码复用 先声明再调用
def print_name():#声明函数
print('我叫帕鲁')
print_name()#调用函数
可变参数
def add(a,b,*args,**kwargs):#args为一个元组,*args为拆包后的元组。kwargs为字典。
#拆包
x, y = (1, 2)
print(x, y)
全局变量:整个py文件任何地方都可以调用。
局部变量:只有在函数内部有效。
name = 'A'#全局变量
def show():
name = 'B'#局部变量
if __name__ == '__main__':
show()
print(name)
当需要在函数内部修改全局变量时需加global:
name = 'A'#全局变量
age = 10
def show():
global name,age
name = 'B'#局部变量
age = 100
if __name__ == '__main__':
show()
print(name)
print(age)
return 有返回值的功能,并有结束函数的功能,支持返回多个值,类型为元组。
函数默认的返回值为None。
def show(name,age):
name = '我叫%s'%name
age = '我今年%s岁了'%age
return name,age
name,age = show('老李',50)
print(name,age)
递归函数:函数调用自己;函数一定要有终止条件。
结算6的阶乘:
def jiecheng(num):
if num == 1:#终止条件
return num
return num*jiecheng(num-1)#调用自己
print(jiecheng(6))
匿名函数:没有名字的函数,只能有一个式子,计算一些简单的操作。用lambda
lambda a,b:a+b
声明一个函数,计算这些参数的和:
def add(x, y, z=3, *args, **kwargs): # 组合参数
sum = x + y + z
# (4,5,6,7,8,9)
for i in args:
sum += i
# {'a' :1,'b':2,'c':3}
for j in kwargs.values():
sum += j
print(sum)
add(1, 2, 3, 4, 5, 6, 7, 8, 9, a=1, b=2, c=3)
用函数来让商店管理系统更简洁:
#商店管理系统:
#1、录入商品
#2、查找商品
#3、修改商品
#4、下架商品
#5、列出所有商品信息
#6、退出
infos = []
def add_item():#添加商品
print('录入')
name = input('请输入道具名:')
num = int(input('请输入道具数量:'))
price = float(input('请输入道具价格:'))
infos.append({'name':name,'num':num,'price':price})
print(infos)
def search():#查找商品
print('查找')
name = input('请输入道具名')
for item in infos:
if item.get('name') == name:
print('道具名为{}'.format(item.get('name')))
print('道具数量为{}个'.format(item.get('num')))
print('道具价格为{}元'.format(item.get('price')))
break
def modify_item():#修改商品
print('修改')
name = input('请输入道具名:')
for item in infos:
if item.get('name') == name:
while True:
print('请问想修改什么?1、名 2、量 3、价 4、返回')
j = int(input('请选择序号:'))
if j == 1:
name = input('请输入新的名称:')
item['name'] = name
elif j == 2:
num = int(input('请输入新的数量:'))
item['num'] = num
elif j == 3:
price = float(input('请输入新的价格:'))
item['price'] = price
elif j == 4:
break
else:
print('输入有误')
break
def remove():#删除商品
print('下架')
name = input('请输入要下架的道具名:')
for item in infos:
if item.get('name') == name:
infos.remove(item)
break
def show():#显示所有商品信息
print('显示')
for item in infos:
print('道具名为{}'.format(item.get('name')))
print('道具数量为{}个'.format(item.get('num')))
print('道具价格为{}元'.format(item.get('price')))
def main():
print('道具屋管理系统'.center(20,'*'))#用*号填满20格除字以外的地方。
while True:
i = int(input('请输入功能:1、录入 2、查找 3、修改 4、下架 5、显示 6、退出'))
if i == 1:
add_item()
elif i == 2:
search()
elif i == 3:
modify_item()
elif i == 4:
remove()
elif i == 5:
show()
elif i == 6:
print('退出')
break
else:
print('输入错误')
if __name__ == '__main__':#在pycharm里打main就会出现这个。只有当前模块时会被执行,被导入则__name__不等于__main__
main()#调用函数
参数:
def print_name(name):#name为参数,可在调用时输入。
print('我叫%s'%name)
print_name('帕鲁')
def add(x,y ,z = 0):#如z未输入则默认为0
print(x+y+z)
a = int(input('请输入数字:'))
b = int(input('请输入数字:'))
add(a,b)
def show(name,age):
print('我叫%s'%name)
print('年龄是%s'%age)
show('帕鲁',22)#必须参数
show(name = '帕鲁', age = 22)#关键字参数,可改参数顺序
定义一个简单的计算器:
def calcu(x, y, z='+'):
if z == '+':
print(x + y)
elif z == '-':
print(x - y)
elif z == '*':
print(x * y)
elif z == '/':
if y != 0:
print(x / y)
else:
print('输入有误')
else:
print('输入有误')
x = int(input('请输入数字:'))
y = int(input('请输入数字:'))
z = input('请输入运算符:')
calcu(x, y, z)