python12个题_python 基础 12 习题讲解2

该博客介绍了如何从原始字符串中提取数据并转换为特定格式的字典结构,包括签到记录的处理和薪资信息的格式化输出。还展示了如何使用列表推导式创建九九乘法表,并提出了一个思考题,即统计10000以内含3的数的数量。
摘要由CSDN通过智能技术生成

习题讲解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的数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值