基础部分:《实战深度理解笔记》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) 编辑 收藏 举报