zoukankan      html  css  js  c++  java
  • 《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)
    

      

  • 相关阅读:
    ClickOnce發布經驗
    reporting Server組件不全引起的致命錯誤
    異步調用
    Usercontrol Hosted in IE
    MATLAB命令大全(转载)
    一种保护眼睛的好方法
    关于oracle自动编号
    An Algorithm Summary of Programming Collective Intelligence (1)
    An Algorithm Summary of Programming Collective Intelligence (3)
    An Algorithm Summary of Programming Collective Intelligence (4)
  • 原文地址:https://www.cnblogs.com/thx2199/p/15244994.html
Copyright © 2011-2022 走看看