python笔记二

一 运算符

    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())
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:UsersAdministratorAppDataLocalProgramsPythonPython35python.exe H:/python17/s1.py
[' hell', ' niha', ' wang ']

 字符串连接

str1 = "hello"
ret ="#".join(str1)
print(ret)
运行结果

C:UsersAdministratorAppDataLocalProgramsPythonPython35python.exe H:/python17/s1.py
h#e#l#l#o

替换replace

str1 = "hello"
ret ="#".join(str1)
print(ret)
ret1=ret.replace("#"," ")
print(ret1)
运行结果

C:UsersAdministratorAppDataLocalProgramsPythonPython35python.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:UsersAdministratorAppDataLocalProgramsPythonPython35python.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:UsersAdministratorAppDataLocalProgramsPythonPython35python.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)
===============================================================
查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素。
    li = ["alec", " aric", "Alex", "Tony", "rain"]
    tu = ("alec", " aric", "Alex", "Tony", "rain") 
    dic = {'k1': "alex", 'k2': ' aric',  "k3": "Alex", "k4": "Tony"}
 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("=================================================")
输出商品列表,用户输入序号,显示用户选中的商品
    商品 li = ["手机", "电脑", '鼠标垫', '游艇']
 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,'    	',l,'  	',t[l][0],'    	',t[l][1],'   	',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
View Code
三级连动,输入一个县级市 查看属于哪个省哪个市
 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, '	', j, '	', 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("系统中没有您所查的信息")
View Code


原文地址:https://www.cnblogs.com/wang43125471/p/7573754.html