基本数据类型,文件操作

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(' ') #写入前换行 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']




 
原文地址:https://www.cnblogs.com/wanghzh/p/5448621.html