一 运算符
1算术运算+ - * / % ** //其中%为取余,**为取幂如2**10=1024 9//4=2
需要注意的是python2.7中如9/2=4 需要正确表示,则在开头添加
from __future__ import division 而python3中不需要9/2=4.5
2比较运算符 == != <> > < >= <=
3赋值运算= += -= *= /= %= **= //=
如a*=c 等同a=a*c a**=c等同 a=a**c
4罗辑运算
与and 或or 非not
5成员运算
in not in
1 s = "the school"
2 ret = "sc" in s
3 print(ret)
显示为True
二 python的数据类型
数字( int)字符(str) 列表 (list)字典(dict)元组( tuple)
元组和列表的最大区别是,元组不能修改,列表可以修改
一查看数据类型里的哪些方法
1 help(int)
help(str)
help(list)
help(dict)
help(tuple)
2 通过PyCharm编写程序按信ctrl鼠标点上去加鼠标左键,点击如下
3 快速注释 ctrl + /(选中所需要注释的行按ctrl加 / ,再按一遍就快速去掉注释)
数字类型(int)
如s = 3
ret = s + 2与ret=s.__add__(2)等值
"""
3二进制0000 0011 最少用2位表示,所以输出结果为2
"""
s = 3
print(s.bit_length())
============================================================================
字符类型(str)
移除空白
str1 = " hello "
ret = str1.strip()
print(str1)
print(ret)
注lstrip为右边空白, rstrip为左边并肯strip括号里可以输入字符
如str1.strip("*")
分割字符
str1 = " hello nihao wang "
ret = str1.split()
print(str1)
print(ret)
运行结果
hello nihao wang
['hello', 'nihao', 'wang']
取字符长度len()
str1 = " hello nihao wang "
print(len(str1))
字符串查找
ret=str1.find("hel")
print(ret)找到返回1,没有找到返回-1
分割
str1 = " hello nihao wang "
ret =str1.split("o")
print(ret)
运行结果
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe H:/python17/s1.py
[' hell', ' niha', ' wang ']
字符串连接
str1 = "hello"
ret ="#".join(str1)
print(ret)
运行结果
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe H:/python17/s1.py
h#e#l#l#o
替换replace
str1 = "hello"
ret ="#".join(str1)
print(ret)
ret1=ret.replace("#"," ")
print(ret1)
运行结果
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe H:/python17/s1.py
h#e#l#l#o
h e l l o
最原始的字符串连接方式:str1 + str2
python 新字符串连接语法:str1, str2
奇怪的字符串方式:str1 str2
% 连接字符串:‘name:%s; sex: ' % ('tom', 'male')
字符串列表连接:str.join(some_list
==========================================================================================================================
列表类型list
增加
name_list=["Robert","Rose","Merry","Hanny"]
name_list.append("wang")
print(name_list)
运行结果
['Robert', 'Rose', 'Merry', 'Hanny', 'wang']
插入insert()
name_list=["Robert","Rose","Merry","Hanny"]
name_list.insert(name_list.index("Rose"),"tt")
print(name_list)
运行结果
['Robert', 'tt', 'Rose', 'Merry', 'Hanny']
其中index是索引确定位置
删除
name_list=["Robert","Rose","Merry","Hanny"]
name_list.remove("Merry")
print(name_list)
运行结果
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe H:/python17/s1.py
['Robert', 'Rose', 'Hanny']
计数
name_list=["Robert","Rose","Merry","Hanny","Robert"]
ret=name_list.count("Robert")
print(ret)
运行结果
2
移除并赋值
name_list=["Robert","Rose","Merry","Hanny","Robert"]
ret=name_list.pop()
print(ret)
print(name_list)
运行结果
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe H:/python17/s1.py
Robert
['Robert', 'Rose', 'Merry', 'Hanny']
排序
name_list=["Robert","Rose","Merry","Hanny","Robert"]
name_list.sort()
print(name_list)
运行结果
['Hanny', 'Merry', 'Robert', 'Robert', 'Rose']
包含in
name_list=["Robert","Rose","Merry","Hanny","Robert"]
ret="Robert" in name_list
print(ret)
运行结果
True
长度len()
name_list=["Robert","Rose","Merry","Hanny","Robert"]
ret=len(name_list)
print(ret)
运行结果
5
循环
name_list=["Robert","Rose","Merry","Hanny","Robert"]
for ret in name_list:
print(ret)
运行结果
Robert
Rose
Merry
Hanny
Robert
===================================================================================
元组(tuple)
由于无法修改只有两个
count()
name_tuple=("Robert","Rose","Merry","Hanny","Robert")
ret=name_tuple.count("Robert")
print(ret)
运行结果
2
index()
name_tuple=("Robert","Rose","Merry","Hanny","Robert")
ret=name_tuple.index("Robert",1,5)
print(ret)
运行结果
4
同样支持for循环
=========================================================================================================
字典dict
更新update()
person_dict={"name":"Robert","sex":"M","age":18}
person_dict.update({"name":"east"})
print(person_dict)
运行结果
{'sex': 'M', 'name': 'east', 'age': 18}
person_dict={"name":"Robert","sex":"M","age":18}
person_dict.update({"school":"east"})
print(person_dict)
运行结果
{'age': 18, 'school': 'east', 'name': 'Robert', 'sex': 'M'}
结论,如果对应的有键值对,则修改,没有则增加
删除键值
person_dict={"name":"Robert","sex":"M","age":18}
person_dict.pop("name")
print(person_dict)
运行结果
{'sex': 'M', 'age': 18}
for循环
person_dict={"name":"Robert","sex":"M","age":18}
for ret in person_dict :
print(ret)
运行结果
age
sex
name
取值get()
person_dict={"name":"Robert","sex":"M","age":18}
print(person_dict.get("name"))
运行结果
Robert
取值
person_dict={"name":"Robert","sex":"M","age":18}
print(person_dict.values())
print(person_dict.keys())
运行结果
<class 'dict_values'>
dict_keys(['sex', 'age', 'name'])
pop获取并在字典中删除
person_dict={"name":"Robert","sex":"M","age":18}
print(person_dict)
ret=person_dict.pop("name")
print(ret)
print(person_dict)
运行结果
{'sex': 'M', 'name': 'Robert', 'age': 18}
Robert
{'sex': 'M', 'age': 18}
=========================================================================
其它
enumrate对迭大的对像加上序号
li=["笔记本","电脑","U盘"]
for k,v in enumerate(li,1):
print(k,v)
ret= input("choose:")
print(li[int(ret)-1])
运行结果
1 笔记本
2 电脑
3 U盘
choose:2
电脑
for i in range(1,5):
print(i)
运行结果
1
2
3
4
for i in range(5,1,-1):
print(i)
运行结果
5
4
3
2
=========================================
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
#/usr/bin/env python3
li=[11,22,33,44,55,77,88,99,90,23]
dic={"k1":[],"k2":[]}
for i in li:
if i > 66:
dic["k1"].append(i)
elif i < 66:
dic["k2"].append(i)
print(dic)
===============================================================
1 #!/usr/bin/env python3 2 li = ["alec", " aric", "Alex", "Tony", "rain"] 3 tu = ("alec", " aric", "Alex", "Tony", "rain") 4 dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"} 5 6 s=' '.join(li) 7 t=s.split() 8 print(li) 9 for i in t: 10 if i[0] == "a" or i[0] =="A" and i[len(i)-1] =="c" : 11 print(i) 12 print("===============================================") 13 print(tu) 14 m=' '.join(tu) 15 n=m.split() 16 for i in n: 17 if i[0] == "a" or i[0] == "A" and i[len(i)-1]=="c" : 18 print(i) 19 print("===============================================") 20 print(dic) 21 t1=[] 22 for m1 in dic.values(): 23 t1.append(m1) 24 print(t1) 25 m2=' '.join(t1) 26 n1=m2.split() 27 for i1 in n1 : 28 if i1[0] == "a" or i1[0]=="A" and i1[len(i1)-1]=="c": 29 print(i1) 30 print("=================================================")
1 #!/usr/bin/env python3 2 li = ["手机", "电脑", '鼠标垫', '游艇'] 3 for k,v in enumerate(li,1): 4 print(k,v) 5 6 while True : 7 i = input("请输入商品:") 8 if i.isnumeric(): 9 if int(i) > 0 and int(i) < 5 : 10 print(li[int(i)-1]) 11 break 12 else: 13 print("pleae input again") 14 else: 15 print("please input again")
采购清单程序
1 #!/usr/bin/env python3 2 goods = [ 3 {"name": "电脑", "price": 1999}, 4 {"name": "鼠标", "price": 10}, 5 {"name": "游艇", "price": 20}, 6 {"name": "美女", "price": 998}, 7 {"name": "bus", "price": 10000}, 8 {"name": "house","price":80000} 9 ] 10 lism = [] #商品名 11 lisn = [] #商品价格 12 buy_lis=[]#所购买的清单 13 cai=["采购物品","修改清单","结算","充值","退出"] 14 15 def goods_look(list1,list2): #查看可购买的商品清单,价格 16 flag=True 17 num=0 18 print("序号 商品名称 单价") 19 while flag: 20 if num < len(list1): 21 print(num+1," ",list1[num],' ',list2[num]) 22 else: 23 break 24 num = num+1 25 ##################################################### 26 def buy_look(s): #查看购买物品清单 27 i = 0 28 print("序号 商品名称 单价 数量 金额") 29 while i < len(s): 30 for t in s[i]: 31 t = s[i] 32 for l in t.keys(): 33 print(i+1,' \t',l,' \t',t[l][0],' \t',t[l][1],' \t',t[l][2]) 34 i = i + 1 35 ##################################################### 36 37 def buy_goods(s): #查看购买物品 38 print(" 商品名 单价 数量 金额") 39 for i in s.keys(): 40 if s[i][1] != 0 : 41 print(i.center(10), ' ', str(s[i][0]).center(5), ' ', str(s[i][1]).center(3), ' ', 42 str(s[i][2]).center(5)) 43 ############################################################## 44 def buy_sum(n):#求购买物品清单总额 45 sum=0 46 i=0 47 while i < len(n) : 48 for j in n[i].keys() : 49 m = n[i][j][2] 50 sum = sum + int(m) 51 i=i+1 52 return sum 53 ################################################################ 54 # def init_buy(s_dict,m_list,n_list): 55 # flag=0 56 # for n1 in m_list: 57 # buy.setdefault(n1,[n_list[flag],0,0]) 58 # flag += 1 59 ################################################################# 60 def buy_list(buy_goods,m_list,n_list,m,n): 61 #加入购特车m代表商品序号,n代表数量 m_list商品单,n_list代表商品价格,buy_goods为数组 62 sum=n_list[m]*n 63 buy_goods.append({m_list[m]:[n_list[m],n,sum,]}) 64 ################################################################ 65 def list_m(s): 66 lism1=[] 67 for i in s: 68 lism1.append(i.get('name')) 69 return lism1 70 def list_n(s): 71 lisn1=[] 72 for i in s: 73 lisn1.append(i.get('price')) 74 return lisn1 75 def buy_act(list_m,list_n,s): 76 #购买商口行为 list_m为商口名称,list_n为单价,s为输入金额 77 flag2=True 78 while flag2: 79 goods_look(list_m,list_n) 80 s1 = input("请输入商品序号:") 81 s2 = input("请选择购买数量:") 82 m = int(s1) - 1 83 n = int(s2) 84 buy_list(buy_lis, lism, lisn, m, n) 85 buy_look(buy_lis) 86 # sum1 = buy_sum(buy_lis) 87 # print("你共计消费总额:", sum1, "还余:", s-sum1) 88 # if sum1 < s: 89 flag1 = input("是否需要继续购买Y/N:") 90 if flag1 == 'Y': 91 flag2 = True 92 else: 93 flag2 = False 94 # else: 95 # s1 = input("请充值:") 96 # s += int(s1) 97 def buy_cz(s): 98 s1 = input("请充值:") 99 s = int(s1)+s 100 return s 101 #====================================== 102 def buy_remove(s): #移除不需要的商品 103 print("您已选购如下商品") 104 while True: 105 buy_look(s) 106 flag_y = input("请是否需要删除不需要的商品y/n") 107 if flag_y == 'y' and len(s): 108 c = input("请选择所购买的商品序号:") 109 buy_lis.remove(s[int(c) - 1]) 110 111 else: 112 break 113 #================================================================ 114 def buy_end(lis,s): #结算,lis为购物清单,s为输入金额 115 js = input("是否要去结算(y/n):") 116 if js == 'y': 117 118 sum2 = buy_sum(lis) # 求和 119 buy_look(lis) 120 print("你共计消费总额:", sum2, "还余:", s - sum2) 121 else: 122 lis.clear() 123 print(lis) 124 print("你共计消费总额:", 0, "还余:", s) 125 #================================================================ 126 def menu(lis): 127 for k,v in enumerate(lis,1): 128 print(k,v) 129 130 131 ################################################################# 132 lism=list_m(goods) 133 lisn=list_n(goods) 134 goods_look(lism,lisn) 135 ################################################################ 136 s=input("请输入金额:") 137 input_s=int(s) 138 # caidan(cai) 139 while True : 140 menu(cai) 141 cai_s=input("请从上面的菜单选择(1-5):") 142 if cai_s == "1" : 143 buy_act(lism,lisn,input_s) 144 if cai_s == "2" : 145 if len(buy_lis): 146 buy_remove(buy_lis) 147 else: 148 print("请重新选择") 149 continue 150 if cai_s == "3" : 151 if len(buy_lis): 152 if buy_sum(buy_lis) <= input_s : 153 buy_end(buy_lis, input_s) #结算付款 154 temp=input_s - buy_sum(buy_lis)#付款余额 155 input_s = temp 156 buy_lis.clear()#清空购买物品list数组 157 else: 158 print("余额不足请充值") 159 input_s = buy_cz(input_s) 160 print("余额为:",input_s) 161 else: 162 print("还没有购买请重新选择") 163 continue 164 if cai_s == "4" : 165 input_s = buy_cz(input_s) 166 print("余额为:",input_s) 167 if cai_s == "5" : 168 break
三级连动,输入一个县级市 查看属于哪个省哪个市
1 #!/usr/bin/env python3 2 dic = { 3 "河北": { 4 "石家庄": ["鹿泉", "藁城", "元氏"], 5 "邯郸": ["永年", "涉县", "磁县"], 6 }, 7 "湖北": { 8 "武汉": ["武昌", "汉口", "汉阳"], 9 "荆州": ["洪湖", "监利", "沙市"], 10 }, 11 "广东":{ 12 "深圳":["罗湖","福田","南山","盐田"] 13 }, 14 } 15 lis1 = [] 16 lis2 = [] 17 s=input("please input country:") 18 flag=True #标识符,没有查到为真,找到了设为假 19 for i in dic.keys(): 20 for j in dic[i].keys(): 21 lis2.append(j) 22 k = 0 23 while k < len(dic[i][j]): 24 # lis2.clear() 创建 新的数组 25 # lis2.append(i) 26 # lis2.append(j) 27 # 28 # # lis2.append(j) 29 # 30 # lis2.append(dic[i][j][k]) 31 # 32 # print(lis2) 33 # lis1.append([lis2[0], lis2[1], lis2[2]]) 34 # print(i, '\t', j, '\t', dic[i][j][k]) 35 if s==dic[i][j][k]: 36 print(i,j,s) 37 flag=False 38 break 39 k = k + 1 40 41 if flag: 42 print("系统中没有您所查的信息")