9-python作业--完美主义(面向对象)
简单的没意思,而且实现的参考价值越来越低了.
现在开始架构搭建.
采用面向对象编程,虽然这里并没有任何的必要.
但是既然已经这么无聊了,练习一下格式也好嘛.
Release
- Setup
- 安装包下载的文件默认在桌面上.
例题
例 4-6
某人买了4只股票,编号为1~4,股票代码、股票名称和买入价分别是:601398、工商银行、5.51;000001、平安银行、8.94;601939、建设银行、6.89;601328、交通银行、5.61。请用字典实现根据编号查询购买的股票信息。要求在输入编号后,可以一直查询购买的股票信息,直到输入编号以外的任意数字时显示“无查询结果”,并结束程序。程序保存为example4_6.py
正常作业:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#example4_6.py
#coding=utf-8
info = {
'601398': ['工商银行', 5.51],
'000001': ['平安银行', 8.94],
'601939': ['建设银行', 6.89],
'601328': ['交通银行', 5.61],
}
no = input("请输入编号:")
while no in info:
print(info[no])
no = input("请输入编号:")
else:
print("无查询结果!")我的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38# 4-6
class Securities():
def __init__(self,typein=0) -> None:
self.typein = typein
self.info = {
'601398': ['工商银行', 5.51],
'000001': ['平安银行', 8.94],
'601939': ['建设银行', 6.89],
'601328': ['交通银行', 5.61],
}
self.outputdict = {
0:"'查询结束'",
1:"self.info[self.typein]",
2:"'无查询结果!'",
}
def data_input(self):
if self.typein in self.info:
return 1
elif self.typein == "0":
return 0
else:
return 2
def output(self,param):
print(eval(self.outputdict[param]))
if param == 2:
self.typein = input("请输入编号(输入0停止查询):")
def main(self):
p = 1
while p:
p = self.data_input()
self.output(p)
if __name__ == "__main__":
sec = Securities(input("请输入编号(输入0停止查询):"))
sec.main()
例 5-2
利用format()方法格式化字符输出如图所示的“九九乘法表”。
正常作业:
1
2
3
4
5
6
7#example5_2.py
#coding=utf-8
for i in range(1, 10):
for j in range(1, i + 1):
print("{}*{}={:<4d}".format(i, j, i * j), end='')
print()我的:
1
2
3#5-2
for row in [[f"{i}x{j}={i*j:<4d}" for j in range(1, i+1)] for i in range(1, 10)]:
print(" ".join(row))
作业
练 9-1
请用字典编程:输出这个班的学生姓名和成绩,并求出全班同学的人数和平均分(保留2位小时)并显示,请用字符串格式化的形式输出。程序保存为exercise9_1.py
正常作业
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#exercise9_1.py
#coding:utf-8
dict1 = {
"张三":45,
"李四":78,
"徐来":40,
"沙思思":96,
"如一":65,
"司音":90,
"赵敏":78,
"张旭宁":99,
"柏龙":60,
"思琪":87,
}
s = 0
for key in dict1:
print(f'{key}\t{dict1[key]}')
s += dict1[key]
print(f'全班共有{len(dict1)}人,平均成绩为{s/len(dict1):.2f}分')我的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32# 9-1
class Students():
def __init__(self) -> None:
'''学生成绩'''
self.info = {
"张三":45,
"李四":78,
"徐来":40,
"沙思思":96,
"如一":65,
"司音":90,
"赵敏":78,
"张旭宁":99,
"柏龙":60,
"思琪":87,
}
def output(self):
print('姓名和成绩分别为:')
s = 0
for key in self.info:
print(f'{key}\t{self.info[key]}')
s += self.info[key]
print(f'全班共有{len(self.info)}人,平均成绩为{s/len(self.info):.2f}分')
def main(self):
'''入口函数'''
self.output()
if __name__ == "__main__":
students = Students()
students.main()
练 9-2
某家商店根据客户消费总额的不同将客户分为不同的类型。
如果消费总额>=10万元,为铂金卡客户(platinum);
如果消费总额>=5万元且<10万元,为金卡客户(gold) ;
如果消费总额>=3万且<5万元,为银卡客户(silver);
如果消费总额<3万元,为普卡客户( ordinary )。
现有一批顾客的消费金额(单位:万元)分别为:2.3、4.5、24、17、1、7.8、39、21、0.5、1.2、4、1、0.3,将消费金额存储在列表list1中,输出一个字典,分别以platinum、 gold、 silver、 ordinary为键,以各客户类型人数为值。程序保存为exercise9_2.py。
正常作业
1
2
3
4
5
6
7
8
9
10
11
12#exercise8_2.py
#coding=utf-8
list1 = [100, 90, 145, 200, 67, 82, 91, 39, 78, 34, -49, 20, 99, 88, 79, 59, 43, 23, 90, 44, 89, 20, 199, 88, 79, 59, 43, 23, 90, 44, 89, 25, 91, 82, 272, -51, 46, 28, 98, 42, 87]
for i in list1:
if i % 7 == 0:
list1.remove(i)
print("删除第一个能被7整除的数字后的列表为:", list1)
break
else:
print("没有能被7整除的数字!")我的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50# 9-2
class Customers():
def __init__(self,customerList:list) -> None:
'''客户'''
self.type2count = {
'paltinum':0,
'gold':0,
'silver':0,
'ordinary':0,
}
self.customers= customerList
def ifErr(self):
if type(self.customers) == list:
for i in self.customers:
if type(i) != int and type(i) != float:
print('ERROR!列表的值应当全是数字!')
return 0
return 1
else:
print('ERROR!输入的类型应应当是一个列表!')
return 0
def count(self) -> None:
'''按照类型统计客户人数'''
for i in self.customers:
if i >= 10:
self.type2count['paltinum'] += 1
elif i >= 5:
self.type2count['gold'] += 1
elif i >= 3:
self.type2count['silver'] += 1
else:
self.type2count['ordinary'] += 1
def output(self):
'''输出'''
for key in self.type2count:
print(f'<{key}> 类用户数量:\t{self.type2count[key]}人')
def main(self):
'''入口函数'''
if self.ifErr:
self.count()
self.output()
if __name__ == '__main__':
customerList = [2.3, 4.5, 24, 17, 1, 7.8, 39, 21, 0.5, 1.2, 4, 1, 0.3]
cus = Customers(customerList)
cus.main()
提交作业
正常作业:(打包文件在文章开头处
setup
)
Download example4_6py
Download example5_2py
Download exercise9_1.py
Download exercise9_2.py我的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143#-- codeing=utf-8 --
#@Time:2024-4-29
#@Author:zzy
#@File:9.py
#@Software:vscode
# 4-6
class Securities():
def __init__(self,typein=0) -> None:
self.typein = typein
self.info = {
'601398': ['工商银行', 5.51],
'000001': ['平安银行', 8.94],
'601939': ['建设银行', 6.89],
'601328': ['交通银行', 5.61],
}
self.outputdict = {
0:"'查询结束'",
1:"self.info[self.typein]",
2:"'无查询结果!'",
}
def data_input(self):
if self.typein in self.info:
return 1
elif self.typein == "0":
return 0
else:
return 2
def output(self,param):
print(eval(self.outputdict[param]))
if param == 2:
self.typein = input("请输入编号(输入0停止查询):")
def main(self):
p = 1
while p:
p = self.data_input()
self.output(p)
if __name__ == "__main__":
sec = Securities(input("请输入编号(输入0停止查询):"))
sec.main()
# 5-2
for row in [[f"{i}x{j}={i*j:<4d}" for j in range(1, i+1)] for i in range(1, 10)]:
print("".join(row))
# 9-1
class Students():
def __init__(self) -> None:
'''学生成绩'''
self.info = {
"张三":45,
"李四":78,
"徐来":40,
"沙思思":96,
"如一":65,
"司音":90,
"赵敏":78,
"张旭宁":99,
"柏龙":60,
"思琪":87,
}
def output(self):
print('姓名和成绩分别为:')
s = 0
for key in self.info:
print(f'{key}\t{self.info[key]}')
s += self.info[key]
print(f'全班共有{len(self.info)}人,平均成绩为{s/len(self.info):.2f}分')
def main(self):
'''入口函数'''
self.output()
if __name__ == "__main__":
students = Students()
students.main()
# 9-2
class Customers():
def __init__(self,customerList:list) -> None:
'''客户'''
self.type2count = {
'paltinum':0,
'gold':0,
'silver':0,
'ordinary':0,
}
self.customers= customerList
def ifErr(self):
if type(self.customers) == list:
for i in self.customers:
if type(i) != int and type(i) != float:
print('ERROR!列表的值应当全是数字!')
return 0
return 1
else:
print('ERROR!输入的类型应应当是一个列表!')
return 0
def count(self) -> None:
'''按照类型统计客户人数'''
for i in self.customers:
if i >= 10:
self.type2count['paltinum'] += 1
elif i >= 5:
self.type2count['gold'] += 1
elif i >= 3:
self.type2count['silver'] += 1
else:
self.type2count['ordinary'] += 1
def output(self):
'''输出'''
for key in self.type2count:
print(f'<{key}> 类用户数量:\t{self.type2count[key]}人')
def main(self):
'''入口函数'''
if self.ifErr:
self.count()
self.output()
if __name__ == '__main__':
customerList = [2.3, 4.5, 24, 17, 1, 7.8, 39, 21, 0.5, 1.2, 4, 1, 0.3]
cus = Customers(customerList)
cus.main()
# 选择
# 1. C
# 2. C
# 3. D
# 4. A
# 判断
# 1. F
# 2. F