一、标准库和第三方库的引用:
sys库、os库的调用
import sys print(sys.path)#打印环境变量 #自己创建三方库时不可以和导入的库名相同 print(sys.argv)#打印当前脚本的绝对路径
1 import os 2 a = os.system('dir')#只可以执行并输出,不可以储存 3 print(a) 4 b = os.popen('dir')#打印对象的内存地址 5 b = os.popen('dir').read()#操作、储存、读取(read) 6 print(b) 7 os.mkdir('new film')#创建了一个新目录
自己编辑一个三方库,然后可以在执行文件中import引用,找模块顺序:当前目录-->site package,或者引用时加路径。
二、数据类型
字符串是 %s 整数 %d 浮点数%f
三元运算:
1 a,b,c = 1,3,5 2 d = a if a > b else c#d的值存谁,有两个条件,如果a大于b,d的值就为a,否则,d的值就为c 3 >>>d 4 >>>5 5 d = a if a < b else c#d的值存谁,有两个条件,如果a小于b,d的值就为a,否则,d的值就为c 6 >>>d 7 >>>1
bytes类型:
bytes和字符串的转换方式:
字符串(string)-----encode----->二进制(bytes)
二进制(bytes)-----decode----->字符串(string)
1 a = '我爱北京' 2 print(a.encode(encoding='utf-8')) 3 print(a.encode(encoding='utf-8').decode())
====================分割线=======================
列表操作:
list = ['a','b','c','d']
增1:list.append('e')#从最后面加
增2:list.incert(1,'e')#把e插入到a后面的位置
删1:list.remove('a') #删除,但仍在内存上,可以取用
删2:del list[0] 或者 list.pop(0) #彻底删除,无法再取用
删3:list.pop() #删除最后一个
删4:del list #删除整个列表
改:list[0] = 'A' #把列表中0位置上的a改为A
查位置:list.index['b'] >>>1 #查询表示b在列表中的1位置上
从左向右数是正数,从0开始数,从右向左数是负数,从负数开始。
查元素:list[1] >>>b #表示位置1上的元素是b
切片查:list[1:3] >>>b,c #切片查询位置1到位置3的元素,返回结果不包括切片范围的最后一个元素(顾头不顾尾)
切片查:list[1:-1] >>>b,c #从位置1到最后一个位置这中间的元素
特殊情况:查倒数第一个到倒数第三个 list[-2:] 不可以写成list[-1:-2],冒号前面是左起,后边是右尾。
同样,查第一个到第三个,list[:2]这就是取前三个
步长切片:list[0:-1:2] & list[::2] #列表中第一位到最后一位,隔一个取一个。
查列表长度:len(list) >>>4 #列表中一共4个元素
查找相同元素的个数:list.count('元素')
清空列表:list.clear()
翻转列表顺序:list.reverse()
列表排序:list.sort() 排列顺序为:符号,数字,字母大-小(按照ask码顺序来排列)
列表合并:list.extend(list_2) #把 list_2 并入到 list 中
列表复制(浅copy):list_2 = list.copy() & list_2 = copy.copy(list) & list_2 = list (list) #(最后一个是工厂函数,外部的list是指令不是列表名)
#复制后修改 list 中的元素,list_2 里面不进行更改。但是,如果 list 里面有子列表的话,修改子列表中的内容,list_2也会跟着改
列表复制(深copy): import copy list_2=copy.deepcopy(list)
====================分割线=======================
元祖类型:
基于元祖不可变的性质,他只有两种功能:count 和 index
tuple = ()
====================分割线=======================
高亮显示:
\033[31:1m%s\033[0m #中间的%s是占位符,内容高亮显示,
31是红色字体,41就是背景红色
32是绿色字体,42就是背景绿色
====================分割线=======================
字符串操作:
例: name = 'alex'
S.capitalize() #首字母大写
S.count() #括号内写元素,统计这个元素在字符串中有几个
S.center(20,'*') #一共20个字符,长度不够的用*号补充,字符串放在中间
S.endswith('x') #判断是否以x结尾,返回True 或者 Fales
S.expandtabs(tabsize = 30) #如果字符串中有'' \t ''(空格),则空格大小设置为30
S.find() #查找括号内的元素的起始位置 (字符串也可以切片)
S.format() #格式化输出的一种
S.format_map( ) #里面是字典,键是字符串中占位的东西,值是实际指的东西
S.isalnum() #判断是不是英文字符加上数字
S.isalpha ( ) #判断是否为纯英文字符
S.isdecimal( ) #判断是否为10进制数字
S.isdigit( ) #判断是否为整数
S.isidentifier( ) #判断是否为合法变量名
S.islower( ) #判断是否全部小写
S.isspace( ) #判断是否为空格
S.istitle( ) #判断是否全部首字母大写
S.isprintable #判断是否可以打印 tty.file drive file这些文件是无法打印的
S.isupper( ) #判断是否全部大写
S.join( ) print('my name is jack'.join('=')) >>> =my name is jack=
或者 print('+'.join(['1','2','3'])) >>> 1+2+3 #把列表中的元素合并成一个字符串
S.ljust(50,'*') #把字符串变成长度50并用*号填充 字符串在左起
S.rjust(50,'*') #把字符串变成长度50并用*号填充 字符串在右起
S.lower( ) #把字符串全部小写
S.upper( ) #把字符串全部大写
S.strip( ) #去掉字符串两边的换行或者空格
S.lstrip( ) #去掉字符串左边的换行或者空格
S.rstrip( ) #去掉字符串右边的换行或者空格
str.maketrans( ) p = str.maketrans('abcde','12345' ) print('alex li'.translate(p)) >>>1l5x li
#作用是 先对应abcde和12345,然后字符串中如果有这个字母,就替换成相应的数字(可以用于密码加密)
S.replace( ) ''alex li''.replace('l','L',1) >>> aLex li
#把''alex li''中的 l 替换成 L ,替换数量为1个
S.rfind( ) #找到括号中元素在字符串中的位置,如果有相同元素的话,就找最右边的,并返回位置
S.split( ) ''my me ma mack''.split('m') >>> ['y','e','a','ack'] 以m作为空格分割字符串并组成一个列表
#如果括号内为空,把字符串按照空格变成字符
S.swapcase( ) #把字符串中的大写换成小写,小写换成大写
S.title( ) #把字符串首字母大写
S.zfill( X) #把字符串变成长度为X,位数不够的用0填充
====================分割线=======================
字典操作:
{key:value}
info = {
'stu_001':'jack',
'stu_002':'candy',
'stu_003':'ruby'
}
info['stu_001']#取值(要肯定有这个值)
info.get('stu_001') #有就取值,没有就返回None(更建议用这个)
'stu_001' in info #有这个就返回T,没有就返回fales
info['stu_001'] = 'JACK' #修改值
info['stu_004'] = 'mmp' #增加键值对
del info['stu_001'] #删除键值对
info.pop('stu_001') #删除键值对
info.setdefault('stu_004',{'mark'})
#创建一个新的键值对,如果这个key存在,就返回原来的数据,没有就新建
info_2 = {'stu_001':'alex',
1:3,
2:5}
info.update(info_2)
#合并两个字典,有交叉的k就覆盖新的值,没有就新建
info.items()#把字典转成列表,里面的键值对变成元祖
dict.fromkeys([4,5,6],'A')
#初始化一个新的字典,批量创建key(456),然后赋值都为(A),赋值不写的话就都为空(none)
#但是,如果要修改值得话,是都变化了,不是单个变化
字典的循环:
for k in dict:
print(k,dict[k])
for k,v in dict.items(): (不建议用!)
print(k,v)
====================分割线=======================
购物车作业:
1 # 启动程序后,让用户输入工资,然后打印商品列表 2 # 允许用户根据商品编号购买商品 3 # 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4 # 可随时退出,退出时,打印已购买商品和余额 5 commodity_list = [ 6 ['AKM',1000], 7 ['M416',1500], 8 ['SCAR',2000], 9 ['UMP9',800], 10 ['子弹',50], 11 ['枪托',150] 12 ] 13 shopping_trolley = [] #购物车 14 wallet = int(input('请输入你的工资:')) 15 while True: 16 count = 0 17 for i in commodity_list: 18 count += 1 19 print(count,i) 20 consumer_choice = input(''' 21 请输入你要选购的商品: 22 退出请按[Q]''') 23 if consumer_choice.isdigit(): 24 consumer_choice = int(consumer_choice) 25 if consumer_choice <= len(commodity_list) and consumer_choice > 0: 26 consumer_choice -= 1 27 wallet -= commodity_list[consumer_choice][1] 28 if wallet >= 0: 29 shopping_trolley.append(commodity_list[consumer_choice]) 30 print('你选购了{},你的余额{}'.format(commodity_list[consumer_choice],wallet)) 31 else: 32 print('你的余额不足,无法购买!') 33 else: 34 print('你的输入有误,请重新输入') 35 elif consumer_choice == 'Q' or consumer_choice == 'q': 36 if len(shopping_trolley) > 0: 37 print(''' 38 -----你购买了以下商品---- 39 {} 40 你的余额:{} 41 -------欢迎下次再来------'''.format(shopping_trolley,wallet)) 42 break 43 else: 44 print('你什么都没买!') 45 break 46 else: 47 print('你的输入有误,请重新输入')