Python第二节
模块初识
- 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 copynames = ['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])

浙公网安备 33010602011771号