zoukankan      html  css  js  c++  java
  • 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:005.txt'
    def putInfoToDict(fileName):
            resDict = {}
           #1-打开文件
            with open(fileName)as fo:
                lines = fo.read().splitlines()
                for line in lines:
                    line=line.replace('(','').replace(')','').replace('	','').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()
    
    


    我是kelly-凯莉 每天努力一点点,幸运就多一点点
  • 相关阅读:
    伪类与伪元素的区别
    display:-webkit-box,display:flex 伸缩盒模型
    猴子分桃-sdut
    简单枚举类型——植物与颜色-sdut
    数据结构实验之链表七:单链表中重复元素的删除-sdut
    约瑟夫问题-sdut
    数据结构实验之链表四:有序链表的归并-sdut
    数据结构实验之链表五:单链表的拆分-sdut
    Spring的定时任务
    HTTP状态码
  • 原文地址:https://www.cnblogs.com/kelly11/p/11818826.html
Copyright © 2011-2022 走看看