python数据类型加强记忆(2017-7-31)
一、回顾
1、顶部
解释器3.5 2.7都要写
编码 3.5 utf-8 2.7 ascii
2、print()
3.5print("hello") 2.7print "hello"
3、编码
ascii 1字节 ==》unicode 2字节 ==》gbk、utf-8、gb2312.。。
ascii 一个字节,8位
unicode 最少两个字节
utf-8 3个字节中文 24
gbk 2个字节中文 16
4、命名规则
首字母不是数字
变量名不能是关键字
数字字母下划线
5、条件语句
if条件
pass
else
pass
注意缩进
6、while
while 条件
pass
执行一次命令块判断条件
continue
break
7、运算符
+ - * /
num="alex" li=["alex","eirc"] if num in li and num.startswith("a") #判断num这个字符串 #是否在li中,且判断开头是不是a print("zai") else: print("buzai")
8、基本数据类型
int,整型
n=123
n=int(123)#int类的__init__
s=123
m=int(s)
字符串转整型必须字符串里只包含数字
s="123"
m=str(s)
在py2里int类型有长度限制
3里没有所以3里没有long
str,字符串
创建
s="asd"
s=str("asd")
把数字变成字符串
a=123
m=str("123")
a=123
m=str(a)
bytes字符类型
字节转字符串
b=字节类型的对象
m=str(b,encoding="utf-8")
首字母变大写
去空格
变大小写
替换
是否为数字、子母
开头结尾
查找
个数
格式化
编码解码
居中
list,列表
创建
i=[11,22,33]
i=list([11,22,33])
j=[11,22,33,]以后写列表是最好在 最后加一个","
转换
t=(11,22,33)
i=list(t)
t="alex"
公共功能
索引
切片
长度
for
enumrate
in
del
特有的功能
反转
排序
追加
插入
索引
移除
个数
扩展
清除
元组
创建
t=(11,22,33)
t=tuple(可迭代的对象)
转换
li=[11,22,33]
m=tuple(li)
公共功能
索引
切片
for
长度
enumerate
in
特有功能
个数
索引位置
元祖特性
儿子不能被修改
孙子可能可以
字典
d={"k":123,"k1":456}
d.update({"k2":123})#字典的添加
d["k2"]=123
转换
列表转字典
li=[11,22,33]
1. li = [11, 22, 33]
dic={}
for j, i in enumerate(li, 10): # 序号从10开始递增
dic[j] = i
print(dic)
结果: {10: 11, 11: 22, 12: 33}
2.li=[11,22,33]
new=dict(enumerate(li,10))#这个的本质就是1
公共功能
索引
增加dic[key]=value
删除
for
长度
in
特有功能
所有的项
建
值
get
xxx in dic.keys()
更新
clear
fromkeys
字符串和字节
str
bytes
a="李杰"
b=bytes(a,encoding="gbk")
c=str(b,encoding="gbk")
int优化机制
a=123
b=123
地址查询id(a)
a和b的内存地址相同 优化范围-5~257
a=123132
b=a在这里ab内存相同
例题
一、元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的
第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
a=[11,22,33,44,55,66,77,88,99,90] b={"k1":[],"k2":[]} for i in a: if i>66: b["k1"].append(i) if i<66: b["k2"].append(i) else: continue print(b)
二、查找
查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素。
li = ["alec", " aric", "born", "Tony", "rain"]
tu = ("alec", " aric", "born", "Tony", "rain")
dic = {'k1': "alec", 'k2': ' aric', "k3": "born", "k4": "Tony"}
1
for h,i in enumerate(li): li[h]=i.strip() if li[h].endswith("c") and (li[h].startswith("a") or li[h].startswith("A")): print(li[h])
2????????????? wn
3
for i in dic.keys(): dic[i]=dic[i].strip() if dic[i].endswith("c") and (dic[i].startswith("a") or dic[i].startswith("A")): print(dic[i])
三、
输出商品列表,用户输入序号,显示用户选中的商品
li = ["手机", "电脑", '鼠标垫', '游艇']
li = ["手机", "电脑", '鼠标垫', '游艇'] for k,i in enumerate(li): print(k,i) al=input("please enter goods serial numbuer") al=int(al) print(li[al])
四、购物车
功能要求:
要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
附加:可充值、某商品移除购物车
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
money=input("请输入您的余额:") money=int(money) goods = [ {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998},] shopcar=[] sum=0 sl=0 while 1: for k, i in enumerate(goods): print(k, i["name"], i["price"]) shop=input("请输入你要购买的商品序号,一次输入一个商品编号,显示购物车输入-1:") shop=int(shop) if shop>=0 and shop <=3: shopcar.append({shop:goods[shop]["name"],"price":goods[shop]["price"]}) sum+=int(goods[shop]["price"]) sl+=1 if shop==-1: while 1: print(shopcar) a=input("确认购买请输入9,要移除某件商品就输入商品序号,继续购买输入8,充值请按7,退出购物车输入-1:") a=int(a) if a==9: if sum>money: print("余额不足,购买失败!") else: print("购买成功!") if a==8: break if a==7: chong=input("请输入充值金额:") chong=int(chong) money+=chong if a>=0 and a<=3: j = 0 for i in shopcar: for k in i: if k==a: shopcar.pop(j) p=10 sl-=1 break if p==10: break j+=1 if j==sl: print("购物车没有该商品") else: print("\n!!!!!!输入错误!!!!!!\n") if a==-1: break if shop>3 or shop<-1: print("\n!!!!!商品不存在!!!!!\n")
五、用户交互,显示省市县三级联动的选择
dic={ "zz":{"cc":["qq","ww"],"vv":["ee"],"bb":["rr"],}, "xx":{"vv":["wwee"],"nn":["qwe"],"mm":[-4,-8],}, } for i in dic: print(i) a=input("请输入") # q=dic[a] for i in dic[a]: print(i) b=input("请输入") for i in dic[a][b]: print(i)

浙公网安备 33010602011771号