python基础练习题4
题目:
现有一个数据库记录文件(0005.txt)保证了学生课程签到的数据记录
('2017-03-13 11:50:09',271,131),
('2017-03-14 11:52:19',273,131),
('2017-03-13 11:50:09',271,126), 每一行记录保存了学生的一次签到信息
每一次签到信息的记录,分成三个部分,分别是签到的时间,签到的课程id,签到学生的ID
要求大家实现下面的函数,其中参数fileName为数据记录文件路径,输出结果是将数据库记录文件中,的学生签到信息保存到一个字典中,并作为返回值返回
def PUtInfo(fileName):
要求返回的字典对象的格式是这样的:
key是各个学生的id,value是该学生的签到信息
其中value,里面保存着该学生所有的签到信息
其中每个签到的信息是字典对象,有两个元素;key是lessiod的课程id,key是checkintime的记录签到时间,
如对上面的示例中的3条记录,响应的返回结果如下:
{
131:[
{'lessonid':271,'checkintime':'2017-03-17 11:50:09'}
{'lessonid':273,'checkintime':'2017-03-14 10:52:09'}
],
126:[
{'lessonid':271,'checkintime':'2017-03-13 11:50:19'}
]
}
需求:
1-要求是函数 def putInfoDic(fileName):
形参
返回值
2-返回是字典--格式
{
学生id:[
{'',''},
{}
]
} 示例:('2017-03-13 11:50:09',271,131),
思路:
1-获取相应数据:每一个:学生ID 课程ID 签到时间
1-读取文件--txt ’r‘ with open('路径') as fo
2-获取文件内容:
fo.read().splitlines()--返回是list
3-对每一个元素进行遍历--for
for line inlines:
4-提取每一个元素响应的内容
1-先处理掉无关字符
2-在切割--取值
2-按照格式组合 '''
fileDir = r'E:\0005.txt'
def putInfoToDict(fileName):
resDict = {}
#1-打开文件
with open(fileName)as fo:
lines = fo.read().splitlines()
for line in lines:
line=line.replace('(','').replace(')','').replace('\t','').replace(';',',')
temp = line.split(',')
checkTime = temp[0].strip()
lessonid = int(temp[1].strip())
userid = int(temp[2].strip())
infoDict = {'lessonid':lessonid,'checkintime':checkTime}
#统计
if userid not in resDict:#增加--键值对
resDict[userid]=[]
resDict[userid].append(infoDict)#增加信息 # if userid not in resDict:
# resDict[userid]=[infoDict]
# else:
# resDict[userid].append(infoDict) return resDict res = putInfoToDict(fileDir)
print(res)
#完美打印
import pprint
pprint.pprint(res)
02:判断101-200之间有多少个素数,并输出所有的素数
l=[]
for i in range(101,200):
for j in range(2,i-1):
if i%j==0:
break
else:
l.append(i)
print(l)
print('总数为:%d'%len(l))
#第二种解法(百度查询)
from math import sqrt
h=0
for m in range(101,201):
leap=1
k = int(sqrt(m)) #返回数字的平方根
for i in range(2,k+1):#K+1,表示从2循环到K(包含k)
if m % i==0:
leap=0
break
if leap==1:
print('%-4d'%m)
h+=1
if h % 10==0:
print('')
print('The total is %d'%h)
03:打印出所有水仙花,所谓’水仙花数‘就是一个三位数,其余个位数立方和等于该数本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方
利用for循环控制100-999个数,每个数分解出个位,十位,百
python 求一个三位数的个位十位百位的值
定义一个数
a=12323343434
百位数:a//100%10
十位数:a//10%10
个位数:a//1%10
----以此类推--
取倒数第几位,就是a//位数%10
e=0
for a in range(100,1000):
b = a%10 #个位数
c=a//10%10#十位数
d=a//100 #百位数
if b**3+c**3+d**3==a:
e+=1
print(e)
04:将一个正整数分解质因数,例如输入90:打印出90=2*3*3*5
while 1:
n = int(input('请输入一个数:'))
print('%d='%n,end='')
while n>1:
for i in range(2,n+1):
if n%i==0:
n=int(n/i)
if n==1:
print('%d'%i,end='')
else:
print('%d**'%i,end='')
break
print()
python基础练习题4的更多相关文章
- python基础练习题1
深深感知python基础是有多么重要,Ljh说一定要多练题,so,我现在开始要每天打卡练习python.加油! 01:求‘1-100’的偶数和 #第一种解法: sum=0 num=0 while nu ...
- python基础练习题(九九乘法表)
又把python捡起来了,动手能力偏弱,决定每日一练,把基础打好! ------------------------------------------------------------------ ...
- python基础练习题
购物车程序 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/3/6 21:01 # @Author : hyang # @Si ...
- Python基础 练习题
DAY .1 1.使用while循环输出 1 2 3 4 5 6 8 9 10 n = 1 while n < 11: if n == 7: pass else: print(n) n ...
- Python基础练习题100例(Python 3.x)
1:题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源 ...
- python基础练习题30道
1.执行python脚本的两种方式 答:1>可以在python /home/xxxx.py 2>cd /home ./xxxx.py 因为py脚本里面指定了python解释器的位置 ...
- 08: python基础练习题
1.while循环实现输出2 - 3 + 4 - 5 + 6 ... + 100 的和 # 使用while循环实现输出2 - 3 + 4 - 5 + 6 ... + 100 的和 s = 0 i = ...
- 『Python基础练习题』day02
1.判断下列逻辑语句的True, False 1) 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 2) ...
- Python学习【day03】- Python基础练习题(列表、元组、字典)
#!/usr/bin/env python # -*- coding:utf8 -*- # 1.有两个列表 # l1 = [11,22,33] # l2 = [22,33,44] # a.获取内容相同 ...
- Python学习【day02】- Python基础练习题
#!/usr/bin/env python # -*- coding:utf8 -*- # 执行Python 脚本的两种方式 # 答:①在windows的cmd窗口下 > D:/Python/p ...
随机推荐
- Python学习笔记:(十三)错误和异常
一.语法错误 在Python中语法错误称之为解析错误. 在语法分析器指出了出错的哪一行,并且在最先找到错误的位置标记了一个小小的箭头. 二.异常 1.异常处理 try except else fina ...
- linux LVM分区查看dm设备
linux LVM分区查看dm设备 在linux中iostat -d查看磁盘状态时,有的会有如下dm-0,dm-1的条目. Device: tps kB_read/s ...
- 2018.04.02 matplotlib 图名,图例,轴标签,轴边界,轴刻度,轴刻度标签
import numpy as np import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame(np.random.r ...
- PHP LDA off 解决
搭建完zabbix初始登录zabbix显示 PHP LDAP off 解决 不需要重新编译php 就可以增加 LDAP 模块 .首先进入自己的 PHP 安装目录中找到 ldap 文件夹 [root@b ...
- 【SSM】---增删改查
20:43:06 package com.chinasofti.dao; import java.util.List; import com.chinasofti.entity.User; publi ...
- mysql——多表——子查询——示例
子查询: 子查询是将一个查询语句嵌套在另外一个查询语句中,内层查询语句的查询结果,可以作为外来层查询语句提供查询条件. 因此在特定条件下,一个查询语句的条件,需要另外一个查询语句来获取. 前期准备表: ...
- 2019JAVA第七次实验报告
Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.10.25 评分等级 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)1 ...
- for循环练习题:拆解字符并输入下标
test = input('请输入:') for item in range(0,len(test)): print(item,test[item])
- [转帖]VMWare官网:无法关闭 ESXi 主机上的虚拟机 (1014165)
无法关闭 ESXi 主机上的虚拟机 (1014165) https://kb.vmware.com/s/article/1014165?lang=zh_CN Last Updated: 4/17/20 ...
- Node.js 博客搭建
Node.js 博客搭建:https://www.linuxidc.com/Linux/2017-02/140115.htm https://www.cnblogs.com/mrcln/p/93087 ...