Day2-基础学习
目录
1.pyc是什么?
2.列表使用
3.元组
4.字符转换
5.购物车程序编写
6.字符串使用
7.字典运用
1.pyc是什么?
PyCodeObject和pyc文件
我们在磁盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。
当Python程序运行的时候,编译的结果而是保存在位于内存中的PyCodeOject中,当Python程序运行结束时候,Python编译器则将PyCodeObject写回到pyc文件中。
当Python程序第二次运行的时候,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以我们应该来定位PyCodeOject和pyc文件,我们说pyc文件其实是PyCodeOject的一种持久的保存方式。
2.列表使用
(1) 列表取值
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] print(names[0],names[2]) ##取其中的值
值得输出如下:
C:\Users\cfj\AppData\Local\Programs\Python\Python35\python3.exe C:/Users/cfj/PycharmProjects/基础/day2/练习.py zhangyang guyun Process finished with exit code 0
(2) 切片
例子1:取列表中的"xiaoming","chenfengjie"中间的值
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] print(names[1:2])
例子2:取最后一个值
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] print(names[3]) ###最后一个值,在已知道列表的数量情况直接数出来
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] print(names[-1]) ###最后一个值,在不清楚列表数目的情况下
例子3: 取最后第二个值
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] print(names[-2]) ###最后第二个值
例子4:取最后两个值
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] print(names[-2:]) ###最后两个值 从左边开始读取,顾头不顾尾
例子5:取前面两个值
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] print(names[:2]) ###前面两个值 从左边开始读取,顾头不顾尾
(3) 添加
例子1:添加到末尾
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",]
names.append("cfj") ###追加到末尾
print(names)
例子2:添加到某个字符前面
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] names.insert(1,"cfj") ###追加到某个字符前面 print(names)
(4) 修改
例子1:将列表中的"guyun"值修改为www
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] names[2] ="www" print(names)
(5) 删除
例子1: 删除列表中的某个字符
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",]
names.remove("jifeng") ###此删除方法,在知道列表名称的情况下直接使用字符删除
print(names)
例子2: 以下标方式删除
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] del names[4] ##删除下标方式 print(names)
例子3:删除最后一个字符
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] names.pop() ##默认不写入下标,删除最后一个;也可以写入下标删除任意一个;#del names[1] = names.pop(1)一样的意思
print(names)
(6) 其他
例子1:取下标,在取值
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",]
print(names[names.index("jifeng")])
例子2:统计字符的数量
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",]
print(names.count("jifeng")) ###统计数量,此处打印出来是“1”
例子3:清空列表
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] names.clear() ###清空列表
例子4:反转整个列表
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] names.reverse() ###整个列表反转
例子5:排序
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] names.sort() ###以字母顺序排序
例子6:合并列表
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] names2 = [1,2,3,4] names.extend(names2) ###合并列表 print(names) 输入如下: C:\Users\cfj\AppData\Local\Programs\Python\Python35\python3.exe C:/Users/cfj/PycharmProjects/基础/day2/练习.py ['zhangyang', 'xiaoming', 'guyun', 'chenfengjie', 'jifeng', 1, 2, 3, 4] Process finished with exit code 0
(7) copy使用
例子1:浅copy使用,只会copy第一层信息
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] names1= names.copy() print(names) print(names1) 打印输出如下: C:\Users\cfj\AppData\Local\Programs\Python\Python35\python3.exe C:/Users/cfj/PycharmProjects/基础/day2/练习.py ['zhangyang', 'xiaoming', 'guyun', 'chenfengjie', 'jifeng'] ['zhangyang', 'xiaoming', 'guyun', 'chenfengjie', 'jifeng'] Process finished with exit code 0
names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] names1= names.copy() names[2] = "顾云" ###修改"guyun"为顾云 print(names) print(names1)
打印输出如下: C:\Users\cfj\AppData\Local\Programs\Python\Python35\python3.exe C:/Users/cfj/PycharmProjects/基础/day2/练习.py ['zhangyang', 'xiaoming', '顾云', 'chenfengjie', 'jifeng'] ['zhangyang', 'xiaoming', 'guyun', 'chenfengjie', 'jifeng'] Process finished with exit code 0
例子2:深copy
import copy names = ["zhangyang","xiaoming","guyun","chenfengjie","jifeng",] names[2] = "顾云" ###修改"guyun"为顾云 names1= copy.deepcopy(names) print(names) print(names1)
打印输出如下:
C:\Users\cfj\AppData\Local\Programs\Python\Python35\python3.exe C:/Users/cfj/PycharmProjects/基础/day2/练习.py ['zhangyang', 'xiaoming', '顾云', 'chenfengjie', 'jifeng'] ['zhangyang', 'xiaoming', '顾云', 'chenfengjie', 'jifeng'] Process finished with exit code 0
3.元组
4.字符转换
mes = "中华人民共和国" print(mes) print(mes.encode(encoding="utf-8")) ##将字符串转成二进制 python默认是utf8 print(mes.encode(encoding="utf-8").decode(encoding="utf-8")) ##将二进制转成字符串
5.购物车程序编写
需求:
1、启动程序后,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额
#!/usr/bin/env python
# -*- coding:utf-8 -*-
welcome_message = '+++++++++++++++ welcome to our shopping mall +++++++++++++++'
print(welcome_message)
product_list = [ # 创建商品列表
('iphone6s',5888),
('computer',4300),
('bike',800),
('book',81),
('thinkpad',4500)
]
shop_car = [] # 创建购物列表
salary = input('input your salary:') # 输入工资
if salary.isdigit: # 如果薪水输入正确
salary = int(salary) # 转换为整数型
else:
exit()
while True:
for item in enumerate(product_list): # 打印产品列表
index = item[0]
shop_name = item[1][0]
shop_price = item[1][1]
print(index,shop_name,shop_price)
user_choice = input('input your want to buy on num:[q=quit]') # 获取信息选择要买的商品还是退出
if user_choice.isdigit(): # 如果输入的是数字
user_choice = int(user_choice)
if user_choice < len(product_list): # 获取对应产品
shop_item = product_list[user_choice]
if shop_item[1] <= salary: # 如果买得起
shop_car.append(shop_item) # 添加入购物列表
salary -=shop_item[1] # 计算余额
for item in shop_car:
print(item)
print('your balance is [%s]'%salary)
user_continu1 = input("继续 is [yes|y],任意键退出")
if user_continu1 == 'yes' or user_continu1 == 'y':
continue
else:
print(shop_car)
exit()
else:
print('your balance is [%s],sorry,cannot to buy this product'%salary) #余额不足提示
user_continu2 = input("继续 is [yes|y],任意键退出")
if user_continu2 == 'yes' or user_continu2 == 'y':
continue
else:
exit()
elif user_choice == 'q' or user_choice == 'quit': #直接退出
break
else: # 如果薪水输入错误
print("sorry!input code [%s] is not exist!"%user_choice)
exit()
6.字符串使用
'''name='my name is cfj'
print(name.capitalize()) #首字母大写
print(name.count("c")) #计算c的个数
print(name.center(50,"+")) #一共打印50个字符,不够使用+补充
print(name.endswith("j")) #判断字符串以什么结尾
print(name.expandtabs()) #将tab键转成空格
print(name.find("name")) #字符串的长度,字符串也可以进行切片
#例子
print(name[name.find("name"):8]) #自己本身前面的长度是3,所以:8可以把name打印处理'''
'''name='my name is {name} and i am {year}'
print(name.format(name='jifeng',year='25'))''' #格式化,传递字符串
'''print('123abc'.isalnum()) #判断是否只有数字,字母
print('abc'.isalpha()) #纯英文字符
print('123'.isdigit()) #判断是否是整数
print('ad'.isidentifier()) #判断是否是合法的标识符
print('22'.isnumeric()) #只有数字在哪里的时候才是正确的
print('My Name Is Cfj'.istitle()) #字符串的每个字母开头是大写
print('MWWFSF AFSD'.isupper()) #字符全是大写
print(''.join(['1','2','3','4'])) ##字符合并'''
'''name='my name is cfj'
print(name.ljust(50,'*')) #保证长度,不够其他字符右边补充
print(name.rjust(50,'*')) #保证长度,不够其他字符左边补充'''
'''print('Cfj'.lower()) #将大写变成小写
print('Cfj'.upper()) #将小写变成大写'''
'''print('Cfj\n'.lstrip()) #去掉左边空格与回车
print('---')'''
'''print('---')
print('\nCfj'.rstrip()) #去掉右边空格与回车'''
print(' Cfj\n'.strip()) #去掉左右的空格
'''p = str.maketrans("abcdef",'123456')
print("alex li".translate(p)) #把字符串转成对应的数值'''
'''print('alex li'.replace('l','L',1)) #替换,且替换第一个
print('alex li'.rfind('l')) #找到最右边值的下标
print('alex li'.split()) #将字符串按照空格分成列表
print('al ex li'.split('l')) #将l当作了分隔符
print('Alex Li'.swapcase()) #大写变小写'''
print('alex li'.zfill(50))
7.字典运用
(1)字典是无序,无下标,乱序
例子1:字典的写法
info = {
'stu01':"chen fengjie",
'stu02':"jifeng",
'stu03':"zhan lan the tian"
}
print(info) #打印出来的值是无序的
结果输出:
C:\Users\cfj\AppData\Local\Programs\Python\Python35\python3.exe C:/Users/cfj/PycharmProjects/基础/day2/字典1.py
{'stu01': 'chen fengjie', 'stu02': 'jifeng', 'stu03': 'zhan lan the tian'}
(2)字典取值
info = {
'stu01':"chen fengjie",
'stu02':"jifeng",
'stu03':"zhan lan the tian"
}
print(info["stu01"]) #字典取值
(3)删除
方式1:
del info["stu01"]
print(info)
方式2:
info.pop("stu01") #标准删除
print(info)
(4)查找
例子1:查询
方式1:
print(info.get('stu01'))
方式2:
print('stu01' in info) #判断stu01是否存在,输出True或者False
(5)修改
例子1:
info["stu01"] = "蜈蚣" #修改值 print(info)
例子2:
av_catalog = {
"欧美":{
"www.youporn.com":["很多免费的","世界最大的"],
"www.pornhub.com":["质量好点"],
"lemedothistoyou。com":["自拍的","资源不多"],
},
"日韩":{
"tokyo-hat":["质量很好"]
},
"大陆":{
"1024":["全部免费","好人一生平安,服务器在国外,慢!!!"]
}
}
av_catalog["大陆"]["1024"][1] = "路漫漫兮"
print(av_catalog)
(6)添加
例子1:查询无再添加
av_catalog.setdefault("taiwan",{"www.taiwan.com":[1,2]}) #查看是否有此条信息,若是没有就创建新的
print(av_catalog)
例子2:有交叉替换,无交叉添加
info = {
'stu01':"chen fengjie",
'stu02':"jifeng",
'stu03':"zhan lan the tian"
}
b = {
'stu01':"cfj",
'stu04':"poxiao",
'stu05':"chenxi"
}
info.update(b) #针对于info而言,有交叉的地方则覆盖,没有的则添加
print(info)
(7)将字典转换成列表
info = {
'stu01':"chen fengjie",
'stu02':"jifeng",
'stu03':"zhan lan the tian"
}
print(info.items()) #将字典转变成列表'''
(8)建立新字典及修改
c = dict.fromkeys([6,7,8],[1,{"name":"alex"},555]) #建立一个新的字典
print(c)
c[7][1]['name'] = 'chen xi'
print(c)
C:\Users\cfj\AppData\Local\Programs\Python\Python35\python3.exe C:/Users/cfj/PycharmProjects/基础/day2/字典1.py
{8: [1, {'name': 'alex'}, 555], 6: [1, {'name': 'alex'}, 555], 7: [1, {'name': 'alex'}, 555]}
{8: [1, {'name': 'chen xi'}, 555], 6: [1, {'name': 'chen xi'}, 555], 7: [1, {'name': 'chen xi'}, 555]}
(9)字典循环
info = {
'stu01':"chen fengjie",
'stu02':"jifeng",
'stu03':"zhan lan the tian"
}
方式1:
for i in info:
print(i,info[i]) #建议使用
方式2:
for k,v in info.items():
print(k,v)
打印输出:
C:\Users\cfj\AppData\Local\Programs\Python\Python35\python3.exe C:/Users/cfj/PycharmProjects/基础/day2/字典1.py chen fengjie stu02 jifeng stu03 zhan lan the tian stu01 chen fengjie

浙公网安备 33010602011771号