基本数据类型,文件操作
1.运算符
a、算数运算
+、-*、/
特殊:% 取模,返回余数
** 几次方,幂
// 返回商的整数部分
b.比较运算
==等于 !=不等于 > < >= <=
c.赋值运算
记忆:a+=b 等价于 a=a+b
其他算数运算符类似
d.逻辑运算
and or not
常用于if后判断多个条件
e.成员运算
in 在指定序列找到值返回True,否则返回False
not in
2.基本数据类型
a.数字
int 03
.
需要记忆:
#!/usr/bin/env python # -*- coding: utf-8 -*- int #数字 n=4 n.bit_length() #获取二进制的最短位数
b.布尔值
真或假 1 或 0 True 或False
c.字符串 str
1).upper 大写 .lower 小写 .title首字母大写 .strip去除空白(lstrip、rstrip)
.capitalize () 首字母大写
2)center 、ljust内容靠左 rjust
l='hello' print(l.center (20,'_')) #内容居中,其他用_补齐
3)
# count ('a',0,4)前几位包括空格a出现了几次,子序列的个数 ''' l='hello' print(l.count('l',0,4)) ''' # endswith ('x',0,2) 是否以x结尾,大于等于0小于2的位置 对应l.startswith()以什么开始 ''' l='hello' print(l.endswith ('x',0,2)) ''' # find (‘p’) 查找子序列,找不到返回-1 ''' l='hello' print(l.find('o',0,3)) ''' # format 格式化 ''' s='hello {0},age {1}' n=s.format('hhh',4) #按顺序代替{} print(n) ''' # join 列表、元组 转 字符串 ''' l=['lll','ooo'] s='--'.join(l) print(s) '''
# l.partition('ll') 分割
# replace 替换
# l.split('e',1) 用e分割
# l.splitlines()用换行符分割
# 索引
'''
l='hello'
l[0]
l[0:2] 切片
'''
'''
l='hello'
l.startswith()
for item in l:
print(item)
'''
# len(l)字符串长度
d.列表
# n=['l','i','p'] # n.append后追加 # n.count()计算出现几次 # n.extend() 批量添加 # n.index()获取值的索引 # n.insert('ss',1) 插入 # n.pop()删除最后一个 # n.remove('ss')移除元素 # n.reverse()反转 # del n[0] 直接删除第几个元素
li = ['电脑','试试','内容']
for item in li:
print(item) #item就是元素本身
e.元组
不能修改
# count计算元素出现的个数
# index 获取元素索引
f.字典
'''
#!/usr/bin/env python
# -*- coding: utf-8 -*-u={ 'name':'alex','age':7,'gender':'M'
} #name 是’alex‘的索引 print(u['name']) for i in u: print(i) #默认输出k u默认等于u.keys
'''
# print(u.keys()) 输出keys
# print(u.values()) 输出values # print(u.items()) 输出keys:values for k,v in u.items(): print(k) print(v) print(u.get['age']) #key 不存在返回none in判断是否在字典 #pop根据k删除 # popitem # del u['name'] 删除字典元素
附加:字符串与列表的互相转化
1)字符串 转 列表
# s = 'ab,cde,fgh,ijk' # print(s.split(',')) #split 把字符串按分隔符分割成列表
2)列表 转字符串
# join 列表、元组 转 字符串 ''' l=['lll','ooo'] #每个元素必须是字符串格式 s='--'.join(l) print(s) '''
3.命令的帮助
# print(dir(k)) #dir 显示命令的所有用法名 # help(type('amm')) # 显示命令的详细用法
4.enumerate 自动生成序号
li = ['电脑','试试','内容'] for item in li: print(item) inp=int(raw_input('>>:')) for k,v in enumerate(li): #enumerate 自动生成序号 默认序号从0开始 # for k,v in enumerate(li,1) 序号从1开始
print(k,v) li[inp]
5.range
# 2.7py range 立马创建 xrange只有for循环时创建 # 3py range()只有for循环时创建 # for i in range(1,10,2) #2步长>=1,小于10 #可用于创建数列
6.文件操作
#!/usr/bin/env python # -*- coding: utf-8 -*- #文件操作 ''' #打开文件
f=open('ha.log') file_obj=file('文件路径','模式') r只读 w写 a追加 w+写读 r+ 读写 ''' file_obj=file('H:\log.txt', 'r+') #以读写方式打开文件 # file_obj.read() # 将所有数据读入内存 #print file_obj.read() line_list=file_obj.readlines() #按换行符隔开,形成列表,每个列表以换行符结束 for ele in line_list: #一行一行读取 line=ele.strip() #去除回车 #str values_list=line.split(';') #以;分开 #形成list # 用列表进行数据修改 values=int(values_list[-1]) # 把字符串数字转化成整形 values+=1 values_list[-1]=str(values) #把 数字 赋值给 字符串数字格式 # print(values_list) #修改完成后转成字符串 values_str=';'.join(values_list)#通过;把列表转换成字符串 file_obj.write('\n') #写入前换行 file_obj.write(values_str) #写入文件 file_obj.writelines()#一行一行写 file_obj.close() #关闭文件
文件操作补充:
#打开文件 f=open('ha.log') file_obj=file('文件路径','模式') #默认编码方式encoding='utf-8' r只读 w写 只写,不可读,文件不存在则创建,存在则清空 x 只写,不可读,文件不存在则创建,存在则报错 a追加 追加,不可读,文件不存在则创建,存在则只追加 w+写读 r+ 读写 rb 以字节方式打开 f=open('ha.log','rb') #data=f.read() str_data=str(data,encoding='utf-8') #存储为字节,读取要将字节转化为字符串 #f.write(bytes('中国',encoding='utf-8')) #存储为字节,写时要将字符串转字节 print(f.tell)查看指针当前位置 f.seek(0)#调整当前指针位置 #with open('H:\log.txt', 'r+') as f: 打开并关闭文件 === f=open('H:\log.txt', 'r+') #同时打开两个文件 with open('H:\log.txt', 'r+') as f1,open('H:\log.txt', 'r+') as f2: for line in f1: f2.write(line) for line in f: #一行一行读 print(line)
7.作业
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' 一、元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值} ''' ''' q=[11,22,33,44,55,66,77,88,99,90] # w={'k1':[],'k2':[]} # for i in q: # if i>=66: # w['k1'].append(i) # else: # w['k2'].append(i) w={} for i in q: if i>=66: if 'k1' in w: w['k1'].append(i) else: w['k1']=[i,] else: if 'k2' in w: w['k2'].append(i) else: w['k2']=[i,] print(w) ''' #二 查找列表中元素,移除空格,并查找以 a或A开头 并且以 c 结尾的所有元素。 # li = ["alec", " aric", "Alex", "Tony", "rain"] # tu = ("alec", " aric", "Alex", "Tony", "rain") # dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"} ''' li = ["alec", " aric", "Alex", "Tony", "rain"] w=[] for i in li: li[li.index(i)]=i.strip() for i in li: li[li.index(i)]=i.title() for i in li: if i.startswith('A') and i.endswith('c'): w.append(i) print(li,w) ''' ''' tu = ("alec", " aric", "Alex", "Tony", "rain") w=[] for i in tu: if i.startswith('A') or i.startswith('a') and i.endswith('c'): w.append(i) print(w) ''' ''' dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"} w=[] for k,v in dic.items(): dic[k]=v.strip() for v in dic.values(): if (v.startswith('A') or v.startswith('a')) and v.endswith('c'): w.append(v) print(dic,w) ''' # 三、输出商品列表,用户输入序号,显示用户选中的商品 # 商品 li = ["手机", "电脑", '鼠标垫', '游艇'] ''' li = ["手机", "电脑", '鼠标垫', '游艇'] for k,v in enumerate(li,1): #enumerate 自动生成序号 print(k,v) inp=int(raw_input('请输入商品序号:')) print(li[inp-1]) ''' ''' 四、购物车 功能要求: 要求用户输入总资产,例如:2000 显示商品列表,让用户根据序号选择商品,加入购物车 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。 附加:可充值、某商品移除购物车 goods = [ {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ] '''
''' def gouwu(): #购物模块 global money global consumption num=int(raw_input('请输入商品序号:')) num-=1 price=goods[num]["price"] #goods[num]:按序号提取字典 goods[num]["price"] 按keys提取价格 money=money-price #并计算剩余金钱 consumption=consumption+price shopping_cart.append(goods[num]) #货物加入购物车 def yichu(): #移除购物车模块 global money global consumption c=int(raw_input(' 请输入0/1选择是否移除购物车商品, 移除请输入1:')) if c==1: e=int(raw_input(' 请输入要移除的商品序号:')) d=goods[e-1] if d in shopping_cart: #判断要移除的商品是否在购物车内 shopping_cart.remove(d) #移除商品 money=money+goods[goods.index(d)]["price"] #余额增加 consumption=consumption-goods[goods.index(d)]["price"] #消费总额减少 else: print('商品不存在') def chongzhi(): #充值模块 global money pay=int(raw_input('请输入充值金额')) money=money+pay print('您的当前余额为:%d' % money) #显示当前余额 money=int(raw_input('请输入您的余额')) goods = [ {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ] for m,n in enumerate(goods,1): print(m) for v in n.values(): print(v) print('=============') #消费总额清零 consumption=0 buy=True #定义默认一直购物 while buy: shopping_cart=[] price=0 #定义初始价格 b=1 #定义默认不退出购物或充值状态 if money>=price: #消费模块;金钱大于货物价格时,才能开始购物 while money>=price: #计价模块,有钱就可以一直购物 gouwu() #移除购物车商品模块 yichu() if money>=0: print('您的当前余额为:%d' %money) #显示当前余额 b=int(raw_input(' 请输入0/1选择是否继续购物, 购物请输入1:')) if b==0: # break #退出计价模块 if b==0: #如果不购物 break #不购物退出整个购物程序 #充值模块 else: while money<price: #金钱不足,可多次充钱,直到能买得起货物 a=int(raw_input(' 您的余额不足,请输入0/1选择是否充值,充值请输入1:')) if a==1: chongzhi() else: break #退出充值模块 if a==0: break #不充值退出程序 #打印购物车商品名、商品价格、消费总额、余额 print('您的消费清单为:') for m,n in enumerate(shopping_cart,1): print(m) for v in n.values(): print(v) #打印消费清单 print('=============') print('您的当前余额为:%d,您的消费总额为:%d' % (money,consumption) ) #打印消费总额 ''' #五、用户交互,显示省市县三级联动的选择 ''' dic = { "河北": { "石家庄": ["鹿泉", "藁城", "元氏"], "邯郸": ["永年", "涉县", "磁县"] }, "广东": {'深圳':['b','c','d'],'广州':['e','f','g'] }, " 陕西": {'西安':['h','i','j'],'宝鸡':['k','l','m'] } } def list_city(): global l,m,n,o,p,q,r,s,t,u l=[] m=[] n=[] o=[] p=[] q=[] r=[] s=[] t=[] u=[] for k in dic: l.append(k) #l=[河北 广东 陕西] for k in dic[l[0]]: m.append(k) #m=[石家庄 邯郸] for k in dic[l[1]]: n.append(k) #n=[深圳 广州] for k in dic[l[2]]: o.append(k) #0=[西安 宝鸡] for k in dic[l[0]][m[0]]: #p=["鹿泉", "藁城", "元氏"] p.append(k) for k in dic[l[0]][m[1]]:#q=["永年", "涉县", "磁县"] q.append(k) for k in dic[l[1]][n[0]]:#r=['b','c','d'] r.append(k) for k in dic[l[1]][n[1]]:#s=['e','f','g'] s.append(k) for k in dic[l[2]][o[0]]:#t=['h','i','j'] t.append(k) for k in dic[l[2]][o[0]]:#u=['k','l','m'] u.append(k) def shi_print(): if a=='河北': for k in m: print(k) elif a=='广东': for k in n: print(k) else: for k in o: print(k) def xian_print(): if b=='石家庄': for k in p: print(k) elif b=='邯郸': for k in q: print(k) elif b=='深圳': for k in r: print(k) elif b=='广州': for k in s: print(k) elif b=='西安': for k in t: print(k) else: for k in u: print(k) while True: list_city() for k in l: print(k) a=raw_input('请输入省:') shi_print() c=raw_input('是否返回上一层,输入y/n') if c=='y': continue else: while True: shi_print() b=raw_input('请输入市:') xian_print() d=raw_input('是否返回上一层,输入y/n') if d=='y': continue else: break break '''
http://www.cnblogs.com/Wxtrkbc/p/5448870.html
补充:购物车字典模式:
{'电脑': {'n': 1, 'price': 1999}}
代码:
shopping_cart={}
def gouwu(): #购物模块
global money
global consumption
num=int(input('请输入商品序号:'))
num-=1
if goods[num]["name"] in shopping_cart.keys(): #goods[num]["name"]取商品名
shopping_cart[goods[num]["name"]]['n']+=1 #商品数量+1
else:
shopping_cart[goods[num]["name"]]={"price":goods[num]["price"],'n':1,} 创建购物车字典 {keys{"price":价格,数量:1}}
money-=shopping_cart[goods[num]["name"]]["price"]*shopping_cart[goods[num]["name"]]['n'] #单价*数量
consumption+=shopping_cart[goods[num]["name"]]["price"]*shopping_cart[goods[num]["name"]]['n']