• 《Python数据分析、挖掘与可视化》课后题答案


    第二章课后题答案

    1.输入一个包含若干自然数的列表,输出这些自然数的平均值,结果保留3位小数。

    ls=eval(input())
    ans=float(sum(ls)/len(ls))
    print('{:.3f}'.format(ans))
    

      

    2.输入一个包含若干自然数的列表,输出这些自然数降序排列后的新列表。

    ls=eval(input())
    ls=sorted(ls,reverse=True)
    print(ls)
    

      

    3.输入一个包含若干自然数的列表,输出一个新列表,新列表中每个元素为原列表中每个自然数的位数。

    ls=eval(input())
    ans=list()
    for i in ls:
        st=str(i)
        ans.append(len(st))
    print(ans)
    

      

    4.输入一个包含若干数字的列表,输出其中绝对值最大的数字。

    ls=eval(input())
    m=ls[0]
    for i in ls:
        if abs(i)>m:
            m=i
    print(m)
    

      

    5.输入一个包含若干整数的列表,输出这些整数的乘积。

    ls=eval(input())
    ans=1
    for i in ls:
        ans*=i
    print(ans)
    

      

    6.输入两个包含若干整数的等长列表,把这两个列表看作两个向量,输出这两个向量的内积。

    ls1=eval(input())
    ls2=eval(input())
    ans=0
    for i in range(min(len(ls1),len(ls2))):
        ans+=ls1[i]*ls2[i]
    print(ans)
    

      

    第三章课后题答案

    1.输入一个字符串,输出其中每个字符的出现次数。(用Counter类)

    2.输入一个字符串,输出其中只出现了一次的字符及其下标。

    3.输入一个字符串,输出其中每个唯一字符最后一次出现的下标。

    4.输入包含若干集合的列表,输出这些集合的并集。(用reduce()函数和operator模块)

    5.输入一个字符串,输出加密后的结果字符串。加密规则:每个字符的Unicode编码和下一个字符的Unicode编码相减,用这个差的绝对值作为Unicode编码,对应的字符作为当前位置上字符的加密结果,最后一个字符和第一个字符进行运算。

    6.输入一个字符串,判断是否回文。(用切片)

    第四章课后题答案

    1.接收一个正整数作为参数,返回对其进行因数分解后的结果列表。

    num = int(input())
    ls = []
    i=2
    while i!=num:
        if num % i == 0:
            num /= i
            ls.append(i)
            i=2
        else:
            i=i+1
    ls.append(i)  
    print(ls)
    

      

    2.接收两个正整数参数n和a(要求a为小于10的自然数),计算形式如a+aa+aaa+....+aa....aaa的表达式前n项的值。

    a,n=input().split()
    a,n=int(a),int(n)
    sum,tmp=0,a
    for i in range(n):
        sum+=tmp
        tmp=tmp*10+a
    print(sum)
    

      

    3.模拟报数游戏。有n个人围成一圈,从0到n-1按顺序编号,从第一个人开始从1到k报数,报到k的人推出圈子,然后圈子缩小,从下一个人继续游戏,问最后留下的是原来的几号。

    n,k=input().split()
    n,k=int(n),int(k)-1
    ls=[i for i in range(n)]
    while n > k+1:
        ls.pop(k)
        for i in range(k):
            a=ls.pop(0)
            ls.append(a)
        n = n-1
    while n>1:
        tmp = k % n
        ls.pop(tmp)
        for i in range(k):
            a=ls.pop(0)
            ls.append(a)
        n = n - 1
    print(ls)
    

      

    4.接收一个字符串作为参数,判断该字符串是否回文。

    st=input()
    l,f=len(st),1
    for i in range(l):
        if st[i]!=st[l-i-1]:
            f=0
            break
    if f==0:
        print("False")
    else:
        print("True")
    

      

    第五章课后题答案

    #例题1.

    合并两个.txt文件内容(交替写)

    f1 = open('D:pywork/eg1_1.txt',encoding='UTF-8')
    f2 = open('D:pywork/eg1_2.txt',encoding='UTF-8')
    with open('D:pywork/eg1_ans.txt','w') as fp:
        with f1,f2:
                while True:
                    line=f1.readline()
                    if line:
                        print('1 .txt:',line)
                        fp.write(line)
                    else:
                        flag=1
                        break
                    
                    line=f2.readline()
                    if line:
                        print('2 .txt:',line)
                        fp.write(line)
                    else:
                        flag=0
                        break
                
                f3 = f1 if flag == 0 else f2
                h = 1 if flag == 0 else 2
                for line in f3:
                    print(h,'.txt:',line)
                    fp.write(line)
    

      

    #例题2.

    把信息写入JSON文件,再读取并输出

    import json
    infor=[
            {'小区名称':'小区A','均价':8000,'月交易量':20},
            {'小区名称':'小区B','均价':8500,'月交易量':35},
            {'小区名称':'小区C','均价':7800,'月交易量':50},
            {'小区名称':'小区D','均价':12000,'月交易量':18}  ]
    with open('D:pywork/eg2_房价信息.json','w') as f:
        json.dump(infor,f,indent=4,separators=[',',':'])
        #indent表示缩进,一般写为4 or 2
        #separators(元素之间用'逗号'隔开,key和内容之间用'冒号'隔开)
    with open('D:pywork/eg2_房价信息.json') as f:
        info=json.load(f)
        for i in info:
            print(i)
    

      

    #例题3.

    模拟生成饭店自2020年1月1日开始,连续100天试营业期间营业额数据写入CSV文件。两列,日期 + 营业额为表头,基础营业额为500,每天增加5 + 5~50元。

    from csv import reader,writer
    from random import randrange
    from datetime import date,timedelta
    
    with open('D:pywork/eg3_data.csv','w') as f:
        w=writer(f)
        w.writerow(['日期','销量'])
        Date=date(2020,1,1)
        for  i in range(100):
            amount = 500 + i*5 + randrange(5,50)
            w.writerow([str(Date) , amount])
            Date = Date + timedelta(days=1)
    with open('D:pywork/eg3_data.csv','r') as f:
        for line in reader(f):
            if line:
                print(*line)
    

      

    #操作题4.

    求超市营业额 1.xlsx 中每个员工的销售总额、每个时段的销售总额、每个柜台的销售总额

    from openpyxl import load_workbook
    persons,periods,goods = dict(),dict(),dict()
    sheet = load_workbook('D:pywork/test4_超市营业额.xlsx').worksheets[0]
    
    for index,row in enumerate(sheet.rows):
        #index获取行标,row获取表格元组
        if index == 0:
            continue   #跳过列标
        _, name, _, time, num, good = map(lambda cell:cell.value,row)
        #映射row,读取员工、时段、金额、柜台
        persons[name] = persons.get(name,0) + num
        periods[time] = periods.get(time,0) + num
        goods[good] = goods.get(good,0) + num
        
    print(persons,periods,goods,sep='
    ')
    

      

    #操作题5.

    追加一列将 每个人的爱好.xlsx 的内容汇总

    from openpyxl import load_workbook
    exl=load_workbook('D:pywork/test5_每个人的爱好.xlsx')
    sheet=exl.worksheets[0]
    tmp = dict()
    for index,row in enumerate(sheet.rows):
        if index == 0:
            title = tuple(map(lambda cell:cell.value,row))[1:]
            #获取所有爱好
            add = len(title) + 2
            sheet.cell(index + 1, add, value = '所有爱好')
        else:
            name = row[0].value #读个名字
            val = tuple(map(lambda cell:cell.value,row))[1:]
            result = ','.join((title[i] for i , v in enumerate(val) if v == '是'))
            sheet.cell(index + 1, add, value = result)
            tmp[name] = result
    exl.save('D:pywork/test5_每个人的爱好.xlsx')
    print(tmp)
    

      

  • 相关阅读:
    【Hadoop】HDFS的运行原理
    ZOOKEEPER3.3.3源码分析(四)对LEADER选举过程分析的纠正
    zookeeper源码分析二FASTLEADER选举算法
    面试题9:用两个栈实现队列
    面试题7:重建二叉树
    C/C++实现链表的常用操作
    扩展卡尔曼滤波(EKF)实现三维位置估计
    毕业论文思路
    链表常用操作
    关于指针
  • 原文地址:https://www.cnblogs.com/thx2199/p/15244994.html
Copyright © 2020-2023  润新知