基础部分:《实战深度理解笔记》1-5

1   【99乘法表】

A. 嵌套循环

 1 ## 2. 嵌套循环
 2 # (1)
 3 for k in range(1,10):
 4     for k1 in range(1,10):  # 关键
 5         print( '%d*%d=%d  ' % (k,k1,k*k1),end = '' )
 6         if k==k1:
 7             print(' ')
 8             break
 9 print('\n')
10 
11 # (2)
12 for i in range(1,10):
13     for j in range(1,i+1):  # 关键
14         print( '%d*%d=%d' % (j,i,i*j),end = '  ' )
15     print('  ')

 

B. 封装类-初始化函数__init__(self)】

 1 ## 3. 封装【类-实例+初始化函数__init__(self)】
 2 class 乘法表():
 3     def __init__(self):
 4         self.k=int(input('输入整数1-10:'))
 5     # 内部定义属性
 6     def 打印(self):
 7     # k是init部门的员工,用的时候要和它的上司init说一下
 8     # i\x是自己部门员工,不用加前缀
 9         for i in range(1,self.k+1):
10             for x in range(1,i+1):
11                 print('%d*%d=%d'%(i,x,i*x),end=' ')
12             print(' ')
13 结果 = 乘法表()
14 结果.打印()

 

2   查明星和电影

 1 ## 只能差1次
 2 v = {
 3     '妖猫传': ['黄轩', '染谷将太', '王力宏'],
 4     '无问西东': ['章子怡', '王力宏', '祖峰'],
 5     '超时空同居': ['雷佳音', '佟丽娅'],
 6 }
 7 a = input('请输入你想查询的演员姓名:')  # 获取用户想查询的名单
 8 b = 0  # 计数器,计算一共遍历了多少次
 9 c = []  # 定义一个空列表,存放被查询到的电影
10 for i in v:  # 取出字典V中的列表
11     b = b + 1  # 累计遍历次数,每次+1
12     if a in v[i]:
13         c.append(i)  # 将查询到的电影放入列表C
14         if b < len(v):  # 如果遍历次数<字典所含数据数量,则继续查找,查出该演员所有出演过的电影
15             continue
16 if len(c) > 0:  # 遍历结束,如果C数据含量不为0,则输出结论
17     print(a + '出演了电影:', end='\n')
18     for l in c:
19         print(l, end='\n')
20 # end='\n'表示 循环内外连接符号,注意都在后面
21 else:  # C数据含量为0,则输出未收录
22     print('后台暂未收录演员' + a + ',请保持关注哟!')

 

 

 1 ##加入3次循环
 2 v={'妖猫传':['黄轩','染谷将太'],'无问西东':['章子怡','王力宏','祖峰'],'超时空同居':['雷佳音','佟丽娅']}
 3 for i in v:
 4     print(i)     #
 5     print(v[i])  #
 6 x=0
 7 while x<3:
 8     x=x+1
 9     a=input('你想查询哪个演员?:')
10     for i in v:
11         actors=v[i]
12         if a in actors:
13             print(a in actors)
14             print(a+'出演了电影'+ i)
15         continue
16 else:
17     print(a in actors)
18     print('sorry,查无此人')

 

3  HellowKitty倒计时随机抽奖器(def函数,return语句)

1)方法1:random, time 

 1 ###  1. 原始代码
 2 import random,time
 3 luckylist = ['海绵宝宝','派大星','章鱼哥']
 4 a = random.choice(luckylist)
 5 print('开奖倒计时',3)
 6 time.sleep(1)
 7 print('开奖倒计时',2)
 8 time.sleep(1)
 9 print('开奖倒计时',1)
10 time.sleep(1)
11    ## 使用三引号打印hellokitty的头像
12 image = '''
13  /\_)o<
14 |      \\
15 | O . O|
16  \_____/'''
17 print(image)
18 print('恭喜'+a+'中奖!')
19 print('\n\n')

2)方法2:封装函数def

 1 ### 2. 使用 封装函数def
 2 import random,time
 3 def a(a1,a2,a3):
 4     x=[a1,a2,a3]
 5     global b
 6 # 定义b前先声明它是【全局变量】
 7     b=random.choice(x)
 8     # 随机选择列表元素
 9     return b
10 a('海绵宝宝','派大星','章鱼哥')
11 print('开奖倒计时',3)
12 time.sleep(1)
13 print('开奖倒计时',2)
14 time.sleep(1)
15 print('开奖倒计时',1)
16 time.sleep(1)
17 image = '''
18  /\_)o<
19 |      \\
20 | O . O|
21  \_____/'''
22 print(image)
23 print('恭喜'+b+'中奖!')

 

4  实例:类的继承

(1)【人事系统管理】

 1 # (3)人事系统管理
 2 class hrSystem:
 3     list=['bob', 'candy', 'jony', 'kelly']
 4     name = ''
 5     salary = 0
 6     kpi = 0  # 员工绩效 kpi
 7     @classmethod          ### A. 录入
 8     def record(cls, name, salary, kpi):
 9         cls.name = name
10         cls.salary = salary
11         cls.kpi = kpi
12     @classmethod          ### B. 检查
13     def check_name(cls):
14         if cls.name in cls.list:
15             print('\n录入正确!')
16             return 1   # return 必须写在最后
17         else:
18             print('\n录入错误!spy不是本公司员工!')
19             return 0
20     @classmethod          ### C. 打印
21     def print_record(cls):
22         if cls.check_name():  # 同级调用,链接return返回值!
23             print(cls.name + '的工作信息如下:')
24             print('本月工资:' + str(cls.salary))
25             print('本年绩效:' + str(cls.kpi))
26         else:
27             exit() # 不是员工无奖励,结束程序
28     @classmethod          ### D. 奖励
29     def kpi_reward(cls):
30         final_kpi=cls.kpi
31         if final_kpi > 95:
32             print('恭喜'+cls.name+'拿到明星员工奖杯!')
33         elif 80 <= final_kpi <= 95:
34             print('恭喜' + cls.name + '拿到优秀员工奖杯!')
35         else:
36             print('很遗憾,'+cls.name+',希望来年勇创佳绩!')
37 hrSystem.record('bob', 13000, 98)
38 hrSystem.print_record()
39 # check_name()通过print_record()调用
40 # 所以不用写hrSystem.check_name()!!!
41 hrSystem.kpi_reward()
42 hrSystem.record('candy', 8000, 89)
43 hrSystem.print_record()
44 hrSystem.kpi_reward()
45 hrSystem.record('k', 8000, 75)
46 hrSystem.print_record()
47 hrSystem.kpi_reward()

(2)【出租车计费】

 1 # (4)出租车计费
 2 #【父类】
 3 class 出租车():
 4     def __init__(self,x1,x2,x3,x4):
 5         self.name=x1
 6         self.单价=x2
 7         self.起步 = x3
 8         self.起步费 = x4
 9     def 计费(self):
10         self.record()
11         self.output()
12     def record(self):
13         print(self.name + '每公里收费' + str(self.单价) + '元,',end='')
14         print('起步'+str(self.起步)+'公里,起步费'+str(self.起步费)+'',end='')
15         self.num = float(input('\n行程公里数:'))
16     def output(self):
17         if self.num<=self.起步:
18             print('按起步费算:'+str(self.起步费))
19         else:
20             money=self.起步费+(self.num-3)*self.单价
21             print('车费是:'+str(money)+'\n')
22      # money是本部员工,num/单价/最低费用是别部员工
23 a = 出租车('张三', 2.5, 3.0, 15)
24 a.计费()
25 #【子类】
26 class 电动车(出租车):   # 重新定义父类初始化函数
27     def __init__(self,x1,x2,x3,x4):
28         self.name = x1
29         self.单价 = 0.8*x2
30         self.起步 = x3
31         self.起步费 = 0.8*x4
32 b = 电动车('李四',2.5,3.0,15)
33 b.计费()

(3)【调查问卷系统】(考虑不同问题、参与人数)

 1 # (5)问卷调查类
 2 # 【父类】
 3 class Survey():
 4     def __init__(self,question):
 5         self.question = question
 6         self.list= []
 7         print(self.question)
 8     def store_response(self,a):
 9         self.list.append(a)
10 f=Survey('你最喜欢的美食?')   # 实例化
11 ### 父类外面的循环
12 # while True:
13 #     a=input('请回答,按 q 键退出:')
14 #     if a=='q':
15 #         break
16 #     f.store_response(a) # 调用父类函数a=new
17 # for i in f.response: # 实例.属性[]
18 #     print('美食:'+i)
19 # print('\n')
20 
21 # 【子类】
22 class New(Survey):
23     def __init__(self,question):
24         Survey.__init__(self,question) # 调用父类方法
25         self.dict={}
26     def store_response(self,n,j):
27         self.dict[n]=j  # 添加字典的键和值
28 h=New('你的籍贯地是哪?')
29 ### 子类外面的循环
30 while True:
31     j=input('请回答,按 q 键退出:')
32     if j=='q':
33         break
34     n=input('输入姓名:')
35     h.store_response(n,j) # 调用父类函数a=new
36 # for i in h.dict():      # 实例.属性{}
37 #     print(i+':'+h.dict[i])
38 for n,j in h.dict.items():   # 同时取键:值
39     print(n+':'+j)

 

5  哈利波特学院-成绩[]/{}文件读写)

1)方法1

 1 ## 1. v1.0小课
 2 file=open('sample/scores.txt','r')
 3 # encode'utf-8'是编码方法, encoding='utf-8'是参数??
 4 file_lines = file.readlines()      #按行读取变量file里面的数据
 5 file.close()
 6 print(file_lines)
 7 #['罗恩 23 35 44\n', '哈利 60 77 68 88 99\n', '赫敏 97 99 89 91 95 99\n', '马尔福 100 85 90']
 8 final=[]
 9 for i in file_lines:
10     print(i)
11 #罗恩 23 35 44
12     a=i.split()    #按空格-字符串分割函数split()-合并函数 ''.jion()
13     print(a)
14 #['罗恩', '23', '35', '44']
15     name=a[0]      #人名
16     sum=0          #分数
17     for mark in a[1:]:
18         sum=sum+int(mark)     #人名对应的总分数
19     f=name+str(sum)+'\n'      #最终的成绩单:人名+总分数
20     final.append(f)
21 winner=open('./winner.txt','w',encoding='utf-8')
22 winner.writelines(final)      #最终成绩单 按行写入 变量winner
23 winner.close()
24 print(final)
25 #['罗恩102\n', '哈利392\n', '赫敏570\n', '马尔福275\n']
26 for t in final:
27     print(t)     #罗恩102

2)方法2

 1 ## 2. v2.0小课
 2 # (1)读取人名、各分数
 3 a=open('sample/scores.txt','r')
 4 b=a.readlines()
 5 a.close()
 6 print(b)
 7 
 8 # (2)计算总分,存入Scores11
 9 dict = {} # {'罗恩': 102, '哈利': 392}
10 mark=[]  # [100,99,98,,,]
11 for i in b:
12     print(i)
13     j=i.split(' ') # 最后一行是'\n'
14     print(j)
15     name=j[0]
16     sum=0
17 ## A. 计算总分
18     for k in j[1:-1]:  # 不包括最后一行'\n'
19         sum=sum+int(k)
20         mark.append(k)
21     dict[name]=sum
22 print(dict)
23 ## B. 提取字典中的键:值 写入scores11
24 for n,m in dict.items():
25     x=n+str(m)+'\n'
26     print('最终成绩——'+x)
27 # 下面是打开文件的另一种方式,为避免忘记close(),很常见
28     with open('sample/scores11.txt','a') as a:
29         c=a.writelines(x)  # <class string>
30 ## mark=[]是为了复习一遍 【列表自动排序】
31 print(mark)
32 mark=list(map(int,mark))### 字符串str变整数int
33 print(mark)
34 mark.sort(reverse=True) ### 降序
35 print(mark)
36 print('\n')
37 ## (3)scores11排序
38 dict1={}
39 num=[]
40 with open('sample/scores11.txt','r') as a:
41     d=a.readlines()
42 for i in d:
43     n=i[0:-4]      # 1字符读取姓名
44     m=int(i[-4:])  # 1字符读取分数,不加int会出现'\n'
45     num.append(m)
46     dict1[m]=n
47 print(num)  #[102, 392, 570, 275]
48 print(dict1)
49 num.sort(reverse=True) # 降序
50 print(num)  #[570, 392, 275, 102]
51 with open('sample/scores12.txt','a') as a:
52     for i in num:
53         x=dict1[i]+str(i)+'\n'
54         e=a.writelines(x)
55         print(x)

 

 

posted on 2019-02-07 13:19  lj-attitudes  阅读(297)  评论(0编辑  收藏  举报

导航