E02 遞迴解壓並對壓縮包內的數字求和

2021-09-02 07:19:55 字數 1083 閱讀 6282

定義檔案xx.tar.gz 的產生方式如下:

import os,tarfile

defunpack_path_file

(pathname)

: archive = tarfile.

open

(pathname,

'r:gz'

) path=os.path.split(os.path.abspath(pathname))[

0]f,n=0,

0# 設定檔案數和加和為0

for tarinfo in archive:

archive.extract(tarinfo, path)

# 解壓壓縮檔案中的乙個檔案

name=tarinfo.name # 解壓的檔名

tfname=os.path.join(path,tarinfo.name)

# 解壓後的檔案路徑

if tarinfo.isfile():

# 如果是檔案 存在待解壓檔案是.的情況 表示當前壓縮檔案

if tarinfo.name.rfind(

".tar.gz")!=

-1:# 如果也是壓縮檔案,則遞迴解壓它

f1,n1=unpack_path_file(tfname)

f+=f1

n+=n1

# 把呼叫函式的檔案數量和數字和加上來

else

:# 如果不是壓縮檔案,則是資料檔案,裡面含有非負整數

f+=1# 檔案數量加1

with

open

(tfname)

as fp:

# 讀出來這個非負整數並加到n上

n+=int(fp.read())

archive.close(

)# 關閉這個壓縮檔案

return f,n # 返回給上一級檔案數量和加和

# 呼叫函式開始解壓

unpack_path_file(

"00.tar.gz"

)

日期:2023年11月24日

遞迴遞推訓練 E

題目要求 一對成熟的兔子每天能產下一對小兔子,每次生一公一母,每只小兔子的成熟期是1天,小兔子一天後成熟可生小兔子,某人領養了一對成熟的兔子,一公一母,第n天後得到多少對兔子。題目思路 定義陣列a代表成熟母兔子的數量,陣列b代表小兔子的數量,每天的小兔子數量等於前一天母兔子的數量,母兔子的數量等於前...

遞推遞迴練習E 養兔子

description 一對成熟的兔子每天能且只能產下一對小兔子,每次都生一公一母,每只小兔子的成熟期是1天,小兔子出生後隔一天才能再生小兔子。第一天某人領養了一對成熟的兔子,一公一母,請問第n天以後,他將會得到多少對兔子。input 測試資料報括多組,每組一行,為整數n 1 n 90 輸入以0結束...

遞推遞迴練習 E 養兔子

description 一對成熟的兔子每天能且只能產下一對小兔子,每次都生一公一母,每只小兔子的成熟期是1天,小兔子出生後隔一天才能再生小兔子。第一天某人領養了一對成熟的兔子,一公一母,請問第n天以後,他將會得到多少對兔子。input 測試資料報括多組,每組一行,為整數n 1 n 90 輸入以0結束...