《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='\n')

  

#操作題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)

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM