模块(库)分两种:标准库、第三方库
import sys
print(sys.path) #打印环境变量
print(sys.argv) #打印文件路径
import os
cmd_res = os.system('dir') #一调用就直接输出屏幕了,不会给变量
print('-->',cmd_res) #0 只是代表成功与否 ,0代表成功
cmd_res = os.popen('dir') #这样打印的是内存对象地址
print('-->',cmd_res)
cmd_res = os.popen('dir').read() #执行后存在内存的某个地方,需.read()取出结果
print('-->',cmd_res)
#os.mkdir('new_dir') #创建一个new_dir文件夹
msg = '我爱北京天安门'
print(msg.encode(encoding='utf-8')) #转存2进制(bytes类型)
print(msg.encode(encoding='utf-8').decode(encoding='utf-8')) #转存2进制(bytes类型)再转回来。
1、数字:整数
int(整型)
float(浮点型)
complex(复数)
2、布尔值
真 或 假
1 或 0
True 或 False
三元运算
result = 值1 if 条件 else 值2
如果条件为真:result = 值1
如果条件为假:result = 值2
decode 解码
encode 编码
本节内容
1、列表、元组操作
2、字符串操作
3、字典操作
4、集合操作
5、文件操作
6、字符编码与转码
7、内置函数
__author__ = 'Chris Liu'
names = ['xiaoming','xiaoxiao','xiaoliang','xiaoqiang','xixi','liang','ming']
print(names)
print(names[0],names[2])
print(names[1:2])
print(names[1:])
print(names[:2])
print(names[-1])
print(names[:-1])
print(names[-1:-3]) #这样取不值,要从先-3
print(names[-2:]) #取后面两个值
print(names[::3],'---------') #步长切片
names.append('LiLei') #添加元素
print(names)
names.insert(0,'XiaoHong') #0索引出插入元素
print(names)
names[1] = 'LiMing' #替换元素
names.remove('XiaoHong') #删除元素
del names[1] #删除索引1元素 等于 names.pop[1]
print(names)
names.pop() #删除后一个
print(names)
print(names.index('xiaoliang')) #查收元素位置
names = ['xiaoxiao','XiaoHong', 'xiaoming', 'xiaoxiao', 'xiaoliang', 'xiaoqiang', 'LiLei']
print(names.count('xiaoxiao')) #查找有几个元素
#print(names.clear()) #清空列表
names.reverse() #反转
print(names)
names.sort() #排序
print(names)
names2 = [1,2,3,4]
names.extend(names2) #合并列表
print(names)
print(names2)
del names2 #删除变量
#浅copy 只 复制一层,第二层复制为地址,深copy 复制为独立
names = ['xiaoxiao','XiaoHong', 'xiaoming', 'xiaoxiao', ['alex','jack'], 'xiaoqiang', 'LiLei']
name2 = names.copy() #浅COPY
print(names)
print(name2)
names[2] = '小明'
names[4][0] = 'ALEXANDER' #浅COPY,copy了内存地址
print(names)
print(name2)
import copy
names = ['xiaoxiao','XiaoHong', 'xiaoming', 'xiaoxiao', ['alex','jack'], 'xiaoqiang', 'LiLei']
name2 = copy.deepcopy(names) #深COPY
print(names)
print(name2)
names[2] = '小明'
names[4][0] = 'ALEXANDER' #浅COPY,copy了内存地址
print(names)
print(name2)
__author__ = 'Chirs Li'
import copy
person = ['name',['saving',100]]
'''
#浅COPY 3种方式
p1=copy.copy(person)
p2=person[:]
p3=list(person)
'''
p1=person[:]
p2=person[:]
p1[0] = 'alex' #浅copy用来创建联合账号
p2[0] = 'fengjie'
p1[1][1] = 50
print(p1)
print(p2)
字典操作
字典一种key value 的数据类型
__author__ = 'Alex Li'
#key-value
info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya'
}
print(info)
print(info['stu1101'])
#修改
info['stu1101'] = '武藤兰'
info['stu1104'] = 'CangJingKong'
#删除
del info['stu1101']
info.pop('stu1102')
info.popitem() #随机删一个
print(info)
#查找
print(info.get('stu1105')) #有就返回,没有就None
print('stu1103' in info) #查找返回True Flase
#多级嵌套及操作
#其他姿势
info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya'
}
print(info.values()) #提取所有的值
print(info.keys()) #提取所有的键
info.setdefault('stu1101','xxxxx') #先查找有无‘键’,有略过,无创建
print(info)
info.setdefault('stu1105','xxxxx')
print(info)
b = {'stu1101':'xiaoxiao'}
info.update(b) #更新字典
print(info)
print(info.items()) #整个变成大列表
#用.fromkeys 创建字典 ,更改一个值 ,其他会全改了
c = dict.fromkeys([6,7,8],'test') #初始化字典,值为'test'
print(c)
c = dict.fromkeys([6,7,8],[1,{'name':'alex'},444]) #初始化字典,值为'test'
print(c)
c[7][1]['neme'] = 'Jack Chen' #会全改了
print(c)
for i in info: #这种效率较高
print(i,info[i])
for k,v in info.items():
print(k,v)
字符串操作
__author__ = 'Chris Li'
name = 'my name is alex'
print(name.capitalize()) #首字母大写
print(name.count('a')) #统计
print(name.center(50,'-')) #打印50个字符,不够的‘-’不上,字符串放中间
print(name.encode(encoding='utf-8')) #转存2进制(bytes类型)
print(name.endswith('ex')) #判断是不是‘ex’结尾
name = 'my \tname is alex'
print(name.expandtabs(tabsize=30)) # '\t' 转换成‘30’个空格
name = 'my name is alex'
print(name.find('name')) #返回字母开始位置索引
print(name[name.find('name'):]) #切片
name = 'my name is {name} and i am {year} old'
print(name.format(name='alex',year=23)) #格式化
print(name.format_map({'name':'alex','year':12})) #格式化
print('ab23'.isalnum()) #阿拉伯数字+英文字母, 返回True ,特殊符号会错误
print('abA'.isalpha()) #纯英文字符返回True
print('19'.isdecimal()) #十进制整数返回True
print('1A'.isdigit()) #判断是否整数
print('a 1A'.isidentifier()) #判断是不是一个合法的标识符(变量名)
print('33'.isnumeric()) #判断是否只有数字
print('My Name Is '.istitle()) #每个首字母大学
print('My Name Is'.isprintable()) #是否可打印的,它是一个tty file,drive file 是不能打印的
print(','.join(['a','b','c']))
print(''
'+'.join(['1','2','3']))
print(name.ljust(50,'*')) #长50 不够的‘*’补上
print(name.rjust(50,'-'))
print('Alex'.lower())
print('Alex'.upper())
print('\nAlex\n'.lstrip())
print('\nAlex\n'.rstrip())
print(' Alex\n'.strip()) #去掉空格
p = str.maketrans('adcdefli','123$@456')
print('alex li'.translate((p))) #随机密码
print('---')
print('alex li'.replace('l','L')) #替换
print('alex li'.replace('l','L',1)) #替换个
print('alex li'.rfind('l')) # 找到最右值的索引
print('al ex lil'.split(' ')) #分割
print('1+2\n3+4+5'.splitlines()) #按照换行分割
print('Alex Li'.swapcase()) #大小写反转
print('lex li'.title()) #单词首个字母大写
print('lex li'.zfill(50)) #长50 不够用零填充
程序练习
购物车程序
需求:
1、启动程序后,让用户输入工资,然后打印商品列表;
2、允许用户根据商品编号购买商品;
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒;
4、可随时退出,退出时,打印已购买商品和余额。
作业:
购物车
用户入口
1.商品信息存在文件里
2.已购商品,余额记录
商家入口
1.可以添加商品,修改商品价格