模块初识
- Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。
- 标准库:不需要安装直接导入
- 第三方库:必须安装下载
标准库模块:
- sys模块
# Author:XP
import sys print(sys.path) #打印环境变量 print(sys.argv) #打印相对路径print(sys.argv[2])
- os模块
# Author:XP
import os cmd_res = os.system("dir") #执行命令不保存结果 cmd_res = os.popen("dir").read()#执行命令保存结果 print("-->",cmd_res) os.mkdir("new_dir") #创建目录哭
pyc是什么
简述Python的运行过程
在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。
我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
数据类型:
int:(整形)
long:(长整形)《--(python3没有)
float:(小数and浮点数)浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
布尔值:【True:真(1)】或【False:假(0)】
列表:
创建列表:
names
=
[
‘ZhangYang‘
,
‘GuYun‘
,
‘xp‘,‘liangcheng‘
]
print(names[1],names[2])
#切片:(查)
print(names[1:3])
GuYun xp
#反向取值切片:
print(names[-2:])
xp liangcheng
提示:前后(正负)取值 下标为0时可以省略这个0如:[2:]、[-2:]
#不长切片
print(names[::2])
#插入(增)
names.insert(1,"nihao")
names.insert(3,"keyi")
#改
names[2] ="xiedi"
#删
del names[1]
names.remove(xp)
#查找一个用户的位置点
print(names.index("xp"))
print(names[names.index("xp")])
#查找统计列表中的重复字符串的数量
print(names.count("xp"))
#清空列表
names.clear()
#反转列表:
names.reverse()
#按字母顺序排序【特殊符号-->数字-->大写字母-->小写】
names.sort()
#列表合并:
names2 = [1,2,3,4]
names.extend(names2)
##copy模块:
import copy
names =
[
‘ZhangYang‘
,
‘GuYun‘
,
‘xp‘,‘liangcheng‘
]
#三种浅拷贝:
n1=copy.copy(names)
n2=name[:]
n3=list(names)
#深拷贝:
name2 = copy.deepcopy(names)
元组
(不可变列表)
创建元组:
ages
=
(
11
,
22
,
33
,
44
,
55
)
程序练习
请闭眼写出以下程序。
程序:购物车程序
需求:
- 启动程序后,让用户输入工资,然后打印商品列表
- 允许用户根据商品编号购买商品
- 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
- 可随时退出,退出时,打印已购买商品和余额
#Author:XP product_list = [ (‘Iphone‘,5800), (‘Mac Pro‘,9800), (‘Watch‘,10600), (‘Bike‘,800), (‘Coffee‘,31), (‘Alex Python‘,120), ] shopping_list=[] salary = input("输入工资:") if salary.isdigit(): salary = int(salary) while True: for index,item in enumerate(product_list): print(index,item) user_choice = input("选择商品:") if user_choice.isdigit(): user_choice = int(user_choice) if user_choice < len(product_list) and user_choice >=0: p_item = product_list[user_choice] if p_item[1] <=salary:#买得起 shopping_list.append(p_item) salary -= p_item[1] print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m"%(p_item,salary)) else: print("\033[41;1m你的余额只剩[%s]啦,还买个毛线\033[0m" % salary) else: print("product code [%s] is not exist!"% user_choice) elif user_choice == ‘q‘: print("----shopping list------") for p in shopping_list: print(p) print("your current balance:",salary) exit(1) else: print("invalid option")
字符串常用操作:
name = "My name is Xp" print(name.capitalize()) #首字母大写 print(name.count("a")) #查看有几个相同的字符串 print(name.center(50,"-"))#打印50个字符不够的话用‘-’补全 print(name.endswith("xp")) #以什么结尾 print(name.expandtabs(tabsize=30))#转成多少个"这里是30个"空格 print(name.find(name))#找字符串的索引 print(‘Xp‘.lower()) #大写转换成小写 print(‘Xp‘.upper())#小写转换成大写 print(name.format(name=‘Xp‘,year=123)) #print(name.format_map( {‘name‘;‘Xp‘,‘year‘;12} )) print(‘ab23‘.isalnum()) print(‘abA‘.isalpha()) print(‘1.23‘.is_integer()) print(‘a 1A‘.isidentifier())#判断是不是一个合法的标识符
字典操作:
字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
语法:
info = { ‘stu1101‘: "TengLan Wu", ‘stu1102‘: "LongZe Luola", ‘stu1103‘: "XiaoZe Maliya", }
# info["stu1101"] ="武藤兰" #改# info["stu1104"] ="CangJinKong"#该字符串存在就修改不存在就添加#print(info["stu1101"]) #查#del info["stu1101"] #删除#info.pop("stu1101") #判断字典里是否有数据#info.popitem("stu1101")#随机删除也可指定#print(info.get(‘stu1104‘))#在字典里精确查找#print(‘stu1104‘ in info)#判断字典里是否有此字符串#info has_key(‘1103) #py2.7里判断字典里是否有此字符串
字典的特性:
- dict是无序的
- key必须是唯一的,so 天生去重
循环:
info = { ‘stu1101‘: "TengLan Wu", ‘stu1102‘: "LongZe Luola", ‘stu1103‘: "XiaoZe Maliya", }
for i in (info): print(i,info[i])