习题讲解2
第5次课第1题
('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
{
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'},
],
}
{③:[{'lessonid':②,'checkintime':①},{'lessonid':②,'checkintime':①}]}
第一步,分析原始字符串
第二步,分析需求预期实现的样式
原格式(①,②,③)→目标格式{③:[{'lessonid':②,'checkintime':①},{'lessonid':②,'checkintime':①}]}
第三步,分析如何将原始字符串转换为目标样式,提取①②③
第四步,按照需求放入到对应的位置
dict1={} #外层字典
dict2={} #内层字典
filepath='d:/第5次课练习题数据.txt'
with open(filepath) as file1:
list1=file1.read().splitlines() #读取文件每一行的内容
for one in list1:
#去掉不需要的字符
one1=one.replace('(','').replace(')','').replace("'",'').strip(',').strip('\t').strip(';')
#用变量接收签到时间,课程id,学生id
checkintime,lessonid,studentid=one1.split(',')
lessonid=lessonid.strip() #去掉课程id前后的空格
studentid=studentid.strip() #去掉学生id前后的空格
dict2={'lessonid':lessonid,'checkintime':checkintime} #将签到信息放入内层字典
if studentid not in dict1: #如果学生id不在字典中
dict1[studentid]=[] #将学生信息添加到字典中,并且放一个空的子列表
dict1[studentid].append(dict2) #将内层字典添加到子列表中
import pprint #加载pprint打印模块
pprint.pprint(dict1) #使用pprint.pprint进行打印
第5次课第2题
name: Jack ; salary: 12000
name :Mike ; salary: 12300
name: Luk ; salary: 10030
name :Tim ; salary: 9000
name: John ; salary: 12000
name: Lisa ; salary: 11000
第一步,需要提取哪些数据name的值,salary的值
第二步,按照需求进行格式化字符串打印
filepath='d:/第5次课练习题2数据.txt'
filepath2='d:/file2.txt'
with open(filepath) as file1,open(filepath2,'w+') as file2:
lines=file1.read().splitlines()
for one in lines:
one1=one.split(';')[0] #以分号作为分割符进行切割
name=one1.split(':')[1].strip() #取得姓名
one2=one.split(';')[1] #以分号作为分割符进行切割
salary=int(one2.split(':')[1].strip()) #取得薪资
#按照要求的格式将姓名和工资等写入文件
file2.write(f'name: {name:<7}; salary: {salary:>5} ; tax: {int(salary0.1):>4} ; income: {int(salary0.9):>5}\n')
九九乘法表
with open ('d:/九九乘法表.txt','w+') as file1:
for i in range(1,10):
for j in range(1,i+1):
file1.write(f'{j}{i}={ij}\t')
file1.write('\n')
用列表推导式写九九乘法表
print('\n'.join(['\t'.join([f'{j}{i}={ij}' for j in range(1,i+1)])for i in range (1,10)]))
思考题,统计10000以内有多少个含有3的数