Python思考题
4字符串格式化
'''
请实现一个程序,实现如下需求点:
1.程序开始的时候提示用户输入学生年龄信息 格式如下:
Jack Green , 21 ; Mike Mos, 9;
我们假设 用户输入 上面的信息,必定会遵守下面的规则:
学生信息之间用分号隔开(分号前后可能有不定数量的空格),
每个学生信息里的 姓名和 年龄之间用 逗号隔开(逗号前后可能有不定数量的空格)
2. 程序随后将输入的学生信息分行显示,格式如下
Jack Green :21;
Mike Mos :09;
学生的姓名要求左对齐,宽度为20, 年龄信息右对齐,宽度为2位,不足前面补零
'''
students = input("请输入学生年龄信息:")
# students = 'Jack Green , 21 ; Mike Mos, 9;'
student_infos = students.split(';')
for student_info in student_infos:
if ',' not in student_info:
continue
name, age = student_info.split(',')
name = str(name).strip()
age = str(age).strip()
age = int(age)
print('%-20s:%02d' % (name, age))
5循环
'''
1.
下面的log变量记录了云服务器上
当天上传的文件信息
其中第一列是文件名,第二列是文件大小
请编写一个程序,统计出不同类型的
文件的大小总和
比如:
jpeg
9988999
json
324324
png
2423233
----------------------------------
'''
log = '''
f20180111014341/i_51a7hC3W.jpeg 169472 FrITJxleSP7wUD-MWw-phL_KP6Eu 15156063244230469 image/jpeg 0
f20180111014341/j_R0Hpl4EG.json 1036 ForGzwzV3e-uR3_UzvppJs1VgfQG 15156064773253144 application/json 0
f20180111020739/i_0TDKs0rD.jpeg 169472 FrITJxleSP7wUD-MWw-phL_KP6Eu 15156076847077556 image/jpeg 0
f20180111020739/j_JFO6xiir.json 1040 FmUhTchdLOd7LBoE8OXzPLDKcW60 15156077904192983 application/json 0
f20180111090619/i_1BwNksbL.jpg 49634 FtXBGmipcDha-67WQgGQR5shEBu2 15156329458714950 image/jpeg 0
f20180111090619/i_3BKlsRaZ.jpg 30152 FoWfMSuqz4TEQl5FT-FY5wqu5NGf 15156330575626044 image/jpeg 0
f20180111090619/i_5XboXSKh.jpg 40238 Fl84WaBWThHovIBsQaNFoIaPZcWh 15156329453409855 image/jpeg 0
f20180111090619/i_6DiYSBKp.jpg 74017 FrYG3icChRmFGnWQK6rYxa88KuQI 15156329461803290 image/jpeg 0
f20180111090619/i_76zaF2IM.jpg 38437 Fui8g5OrJh0GQqZzT9wtepfq99lJ 15156334738356648 image/jpeg 0
f20180111090619/i_B6TFYjks.jpg 37953 FleWqlK2W1ZmEgAatAEcm1gpR0kC 15156329464034474 image/jpeg 0
f20180111090619/i_N9eITqj3.jpg 38437 Fui8g5OrJh0GQqZzT9wtepfq99lJ 15156330419595764 image/jpeg 0
f20180111090619/i_QTSNWmA6.jpg 37953 FleWqlK2W1ZmEgAatAEcm1gpR0kC 15156333104224056 image/jpeg 0
f20180111090619/i_XdHcAfh1.jpg 56479 FjLQIQ3GxSEHDfu6tRcMylK1MZ05 15156334227270309 image/jpeg 0
f20180111090619/i_Xyy723MU.jpg 50076 FsfZpQzqu084RUw5NPYW9-Yfam_R 15156334229987458 image/jpeg 0
f20180111090619/i_d8Go0EOv.jpg 30152 FoWfMSuqz4TEQl5FT-FY5wqu5NGf 15156334736228515 image/jpeg 0
f20180111090619/i_diuHmX53.jpg 40591 FuTx1pw4idbKnV5MSvNGxCA5L470 15156333878320713 image/jpeg 0
f20180111090619/i_qQKzheSH.jpg 55858 Fj0A3i8V7fzzOiPQFL79ao15hkN9 15156329456666591 image/jpeg 0
f20180111090619/i_rHL5SYk8.jpg 40238 Fl84WaBWThHovIBsQaNFoIaPZcWh 15156336509742181 image/jpeg 0
f20180111090619/i_xZmQxUbz.jpg 40238 Fl84WaBWThHovIBsQaNFoIaPZcWh 15156333240603466 image/jpeg 0
f20180111090619/i_zBDNgXDv.jpeg 73616 FlgNwq8lypgsxrWs_ksrS_x47SQV 15156334232887875 image/jpeg 0
f20180111090619/j_4mxbEiVh.json 2990 Fpq-3yl3Yr1CadNrJVSDnpeRhQtT 15156331445226898 application/json 0
f20180111090619/j_i1K74768.json 3042 Fl5PpDw1TsZXMuhoq1RUrOeGZ6br 15156335067090003 application/json 0
f20180111095839/i_Q7KMKeda.png 518522 Fl-yB1_ruL2uxZN9k7DjB62h9dYH 15156359599713253 image/png 0
f20180111095839/j_5DpqHolV.json 184 FoYvi7cmSrzuVjUgCRzW5kU95SVo 15156359719719064 application/json 0
f20180111100442/i_No8kToIV.jpg 48975 Fu1cw3f--5Vpz9kLGeJfvljhCtyZ 15156364349642377 image/jpeg 0
f20180111100442/i_P1bkvSeg.jpg 68200 FvYe8vi46TjUKhEy_UwDqLhO6ZsW 15156363800690634 image/jpeg 0
f20180111100442/i_T1AulKcD.jpg 52641 Fj2YzvdC1n_1sF93ZZgrhF3OzOeY 15156364021186365 image/jpeg 0
f20180111100442/i_X8d8BN07.jpg 50770 FivwidMiHbogw77lqgkIKrgmF3eA 15156363969737156 image/jpeg 0
f20180111100442/i_g0wtOsCX.jpg 76656 Fmtixx0mP9CAUTNosjLuYQHL6k0P 15156363448222155 image/jpeg 0
f20180111100442/i_h5OT9324.jpg 72672 FvbIqPLTh2cQHTIBv2akUfahZa_Z 15156364401354652 image/jpeg 0
f20180111100442/i_he8iLYI6.jpg 49399 FjeJvwjwhU-hKZsq66UoBg9_tEJs 15156363907932480 image/jpeg 0
f20180111100442/i_kg29t7Pp.jpg 76293 FuYj__sSeEN7AsXMbxO24Z8Suh8d 15156364156384686 image/jpeg 0
f20180111100442/i_oz1YoBI1.jpg 75620 FkY3xsUMwOI01zgoH1iXXgiQeq6I 15156364089112904 image/jpeg 0
f20180111100442/i_xrOT98on.jpg 50021 Fql7ookM1Rc6V7VairKAfnKe-o9w 15156363856357316 image/jpeg 0
f20180111135114/i_Zqt8Tmoe.png 161629 FlELw59_mV3VqDBLyu1BKN4fIWnx 15156500155209863 image/png 0
f20180111135114/j_uhHoMXKq.json 159 FrypljwAr2LgoLAePBNTUYTUAgDt 15156500200488238 application/json 0
f20180111142119/i_s83iZ2GR.png 92278 Fns8tdh3JCkRmfE_COYEu4o8w03E 15156517082371259 image/png 0
f20180111142119/j_0g45JRth.json 159 Fq1rFwdRguYRXrp61nGZ5TsUG1V- 15156517143375596 application/json 0
f20180111144306/i_yE5TC84E.png 139230 Fjf61ymabEnEvnr5ZMHFjXGCrYlP 15156530038824150 image/png 0
f20180111144306/j_OF4WVtSH.json 159 FqwkKcxfo8jd0jFUyuH4X2CrnE9q 15156530083419530 application/json 0
f20180111150230/i_KtnER4g3.png 120044 FuwOWdrqzcr2-UScem-LzEMgMezs 15156541734892258 image/png 0
f20180111150230/j_xMSUEejY.json 158 FjJr_4deMqFphGaptm-2Pa6wwRP2 15156541771989216 application/json 0
f20180111151741/i_JuSWztB3.jpg 92506 FrIjRevHSi6xv4-NQa2wrHu5a1zQ 15156550875370965 image/jpeg 0
f20180111153550/i_9wWzVenl.gif 769872 FvslKY9JUaCQm-lu02E34tvAP_oG 15156561674621628 image/gif 0
'''
jpeg = []
png = []
json = []
logs = log.split('\n')
for i in logs:
if '_' not in i:
continue
if 'image/jpeg' in i:
size = i.split('.jpeg')[-1].split('.jpg')[-1].strip().split(' ')[0]
jpeg.append(int(size))
elif 'image/png' in i:
size = i.split('.png')[-1].strip().split(' ')[0]
png.append(int(size))
elif 'application/json' in i:
size = i.split('.json')[-1].strip().split(' ')[0]
json.append(int(size))
print(f'jpeg 类型总大小:{sum(jpeg)}\npng 类型总大小:{sum(png)}\njson 类型总大小:{sum(json)}')
05文件的读写+字典与json
思考题1
'''
现有一个数据库记录文件(见附件0005_1.txt),保存了学生课程签到的数据库记录。 内容格式如下 ,
('2017-03-13 11:50:09', 271, 131),
('2017-03-14 10:52:19', 273, 131),
('2017-03-13 11:50:19', 271, 126),
每一行记录保存了学生的一次签到信息。
每一次签到信息的记录,分为三个部分, 分别是签到时间、签到课程的id号、签到学生的id号
要求大家实现下面的函数。其中参数fileName 为 数据库记录文件路径, 输出结果是将数据库记录文件中的学生签到信息保存在一个字典对象中,并作为返回值返回。
def putInfoToDict(fileName):
要求返回的字典对象的格式是这样的:
key 是各个学生的id号, value是 该学生的签到信息
其中value,里面保存着该学生所有签到的信息
其中每个签到的信息是字典对象,有两个元素: key 是lessonid的 记录课程id,key是checkintime的 记录签到时间
比如,对于上面的示例中的3条记录,相应的返回结果如下:
{
131: [
{'lessonid': 271,'checkintime':'2017-03-13 11:50:09'},
{'lessonid': 273,'checkintime':'2017-03-14 10:52:19'},
],
126: [
{'lessonid': 271,'checkintime':'2017-03-13 11:50:19'},
],
}
'''
import json
student_info = {}
def putInfoToDict(fileName):
with open(fileName, 'r') as f:
lines = f.read().replace(',', '').split('\n')
for line in lines:
checkintime = line.split("' ")[0].replace("('", "")
lessonid = line.split(" ")[2].strip()
studentid = line.split(" ")[3].strip().replace(')', '').replace(';', '')
# print(studentid)
if studentid in student_info.keys():
student_info[studentid].append({'lessonid': lessonid, 'checkintime': checkintime})
else:
student_info[studentid] = [{'lessonid': lessonid, 'checkintime': checkintime}]
fileName = '0005_1.txt'
putInfoToDict(fileName)
print(json.dumps(student_info, indent=4))
思考题2
'''
现有文件1(如下,请保存到文件file1.txt中), 记录了公司员工的薪资,其内容格式如下
name: Jack ; salary: 12000
name :Mike ; salary: 12300
name: Luk ; salary: 10030
name :Tim ; salary: 9000
name: John ; salary: 12000
name: Lisa ; salary: 11000
每个员工一行,记录了员工的姓名和薪资,
每行记录 原始文件中并不对齐,中间有或多或少的空格
现要求实现一个python程序,计算出所有员工的税后工资(薪资的90%)和扣税明细,
以如下格式存入新的文件 file2.txt中,如下所示
name: Jack ; salary: 12000 ; tax: 1200 ; income: 10800
name: Mike ; salary: 12300 ; tax: 1230 ; income: 11070
name: Luk ; salary: 10030 ; tax: 1003 ; income: 9027
name: Tim ; salary: 9000 ; tax: 900 ; income: 8100
name: John ; salary: 12000 ; tax: 1200 ; income: 10800
name: Lisa ; salary: 11000 ; tax: 1100 ; income: 9900
要求像上面一样的对齐
tax 表示扣税金额和 income表示实际收入。注意扣税金额和 实际收入要取整数
'''
fileName = 'file1.txt'
with open(fileName, 'r') as f:
lines = f.read().splitlines()
for line in lines:
name = line.split(';')[0].strip().replace(' ', '')[5:]
salary = line.split(';')[1].strip().replace(' ', '')[7:]
tax = int(salary) * 0.1
tax = int(tax)
income = int(salary) - tax
print(f'name: {name:7}; salary: {salary:>7} ; tax:{tax:>5} ; income: {income:>7}')
06习题
思考题1
'''
统计10000以内有多少个含有9的数.
'''
sum = 0
for i in range(10000):
if '9' in str(i):
sum += 1
print(f'10000以内有{sum}个含有9的数')
07模块与包+yaml文件操作
思考题1
'''
写一个猜数字游戏,需求如下:
随机生成一个0-100之间的数字,让用户猜,如果用户猜对了,提示:回答正确,游戏结束.
如果猜错了给出对应的提示(您输入的值过大,您输入的值过小),最多允许猜7次.
'''
import random
random_num = random.randrange(0, 100)
for i in range(7):
input_num = input("请输入0-100之间的数字:")
if int(input_num) == random_num:
print(f"恭喜您,猜对了!数值为{random_num}")
break
elif int(input_num) > random_num:
print("您输入的值过大!")
elif int(input_num) < random_num:
print("您输入的值过小!")
else:
print("对不起,您已超过次数!")
08pycharm使用技巧+requests爬虫
思考题1
https://www.cnblogs.com/greensunit/p/15433582.html
10面向对象进阶+面向对象高级
'''
要求大家用面向对象的设计编写一个python程序,实现一个文字游戏系统。
动物园里面有10个房间,房间号从1 到 10。
每个房间里面可能是体重200斤的老虎或者体重100斤的羊。
游戏开始后,系统随机在10个房间中放入老虎或者羊。
然后随机给出房间号,要求游戏者选择敲门还是喂食。
如果选择喂食:
喂老虎应该输入单词 meat,喂羊应该输入单词 grass
喂对了,体重加10斤。 喂错了,体重减少10斤
如果选择敲门:
敲房间的门,里面的动物会叫,老虎叫会显示 ‘Wow !!’,羊叫会显示 ‘mie~~’。 动物每叫一次体重减5斤。
游戏者强记每个房间的动物是什么,以便不需要敲门就可以喂正确的食物。
游戏3分钟结束后,显示每个房间的动物和它们的体重。
实现过程中,有什么问题,请通过课堂上讲解的调试方法,尽量自己发现错误原因。
'''
import random
class Game:
def __init__(self):
animal = {"老虎": 200, "羊": 100}
self.room = {}
for i in range(1, 11):
self.room[i] = {}
for i in self.room.keys():
a = random.sample(animal.keys(), 1)[0]
self.room[i] = {a: animal[a]}
self.b = random.sample(self.room.keys(), 1)[0]
print(self.room)
print(f"房号:{self.b}")
self.num = input("1.喂食\n2.敲门\n请输入序号选择:")
if self.num == "1":
flag = input("喂老虎输入单词 meat\n喂羊输入单词 grass\n请输入序号选择:")
if flag == "meat":
self.meat()
elif self.num == "2":
print("敲门")
self.door()
def meat(self):
if '老虎' in self.room[self.b].keys():
self.room[self.b]['老虎'] = int(self.room[self.b]['老虎']) + 10
print(self.room[self.b]['老虎'])
else:
self.room[self.b]['羊'] = int(self.room[self.b]['羊']) - 10
print(self.room[self.b]['羊'])
def grass(self):
if '羊' in self.room[self.b].keys():
self.room[self.b]['羊'] = int(self.room[self.b]['羊']) + 10
print(self.room[self.b]['羊'])
else:
self.room[self.b]['老虎'] = int(self.room[self.b]['老虎']) - 10
print(self.room[self.b]['老虎'])
def door(self):
for key, value in self.room[self.b].items():
if key == '老虎':
print("Wow !!")
self.room[self.b]['老虎'] = int(self.room[self.b]['老虎']) - 5
else:
print("mie~~")
self.room[self.b]['羊'] = int(self.room[self.b]['羊']) - 5
if __name__ == '__main__':
Game()

浙公网安备 33010602011771号