python遞歸與文本分割

遞歸:
python默認遞歸深入100層,設置遞歸深度:
import sys
sys.setrecursionlimit(層數)

函數自身調用自身
有一個明確的結束條件

def fun(n):
if n == 1:
return 1
else:
return n * fun(n-1)
pass
print(fun(5))

斐波那契非遞歸:
def fab(n):
n1 = 1
n2 = 1
n3 = 1

if n < 1:
    print("輸入有誤!")
    return -1

while (n-2) > 0:
    n3 = n2 + n1
    n1 = n2
    n2 = n3
    n -= 1
    pass
return n3

result = fab(12)
if result != -1:
print('總共有%d對小兔子誕生!'%result)
遞歸斐波那契:
def Tu(n):
if n == 1 or n == 2:
return 1
else:
return Tu(n-1) + Tu(n-2)
pass

print(Tu(12))
字典:
字典默認值:None
字典名 = {key:value,key:value}
dict(key=value,key=value) dict字典類型工廠函數,key爲字符串時,不可加引號
調用:
字典名[key]

keys() 拿到字典的key
values() 拿到字典的value
items() 拿到字典key和value
clear() 清空字典
copy() 拷貝
id(變量) 查看內存地址
pop(key) 彈出鍵值對
popitem() 按優先級彈出鍵值對
setdefault(key,value) 當字典裏不存在該key時,會自動添加
集合:
{數值,數值}
唯一
set(列表)
add() 集合追加數值
不可變集合 frozenset([列表])
open(路徑\文件名,打開方式) 打開文件
打開方式:
'r' 以只讀方式打開(默認)
'w' 以寫入的方式打開文件,會覆蓋已存在文件
'x' 如果文件已存在,使用此模式打開將引發異常
'a' 以寫入模式打開,如果文件存在,則在末尾追加寫入
'b' 以二進制模式打開
't' 以文本形式打開(默認)
'+' 可讀寫模式(可添加到其他模式中使用)
'U' 通用換行符支持
文件對象方法:
close() 關閉文件
read(size=-1) 從文件讀取size個字符,當未給定size或給負值時,讀取剩餘的所有字符,然後作爲字符串返回
readline() 以寫入模式打開,如果文件存在,則在末尾追加寫入
write(str) 將字符串寫入文件
writelines(seq) 向文件寫入字符串序列seq,seq應該是一個返回字符串的可
迭代對象
seek(offset,from) 在文件中移動文件指針,從from(0代表文件起始位置,1代表當前位置,2代表文件末尾)偏移offset個字節
tell() 返回當前在文件中的位置

文本分割:

file = open('duihua.txt')

boy = []
girl = []
count = 1

for each_line in file:
    #判斷前6個字符是否爲=號
    if each_line[:6] != '======':
        #字符串分割:
        (role,line_spoken) = each_line.split(':',1)
        if role == '天道':
            boy.append(line_spoken)
            pass
        if role == '鳴人':
            girl.append(line_spoken)
    else:
        #文件分別保存
       file_name_boy = 'boy_' + str(count) + '.txt'
       file_name_girl = 'girl' + str(count) + '.txt'

       boy_file = open(file_name_boy,'w')
       girl_file = open(file_name_girl,'w')

       boy_file.writelines(boy)
       girl_file.writelines(girl)

       boy_file.close()
       girl_file.close()

       boy = []
       girl = []
       count += 1
       pass
    pass

file_name_boy = 'boy_' + str(count) + '.txt'
file_name_girl = 'girl' + str(count) + '.txt'

boy_file = open(file_name_boy,'w')
girl_file = open(file_name_girl,'w')

boy_file.writelines(boy)
girl_file.writelines(girl)

boy_file.close()
girl_file.close()

file.close()

文本分割:

def save_file(boy,girl,count):
    boy_name_file = 'boy' + str(count) + '.txt'
    girl_name_file = 'girl' + str(count) + '.txt'

    boy_file = open(boy_name_file,'w')
    girl_file = open(girl_name_file,'w')

    boy_file.writelines(boy)
    girl_file.writelines(girl)

    boy_file.close()
    girl_file.close()
    pass

def fb_file(file_name):
    f = open(file_name)

    boy = []
    girl = []
    count = 1

    for each_line in f:
        if each_line[:6] != '======':
            (role,line_spoken) = each_line.split(':',1)
            if role == '天道':
                boy.append(line_spoken)
            if role == '鳴人':
                girl.append(line_spoken)
        else:
            save_file(boy,girl,count)

            boy = []
            girl = []
            count += 1
            pass
        pass
    save_file(boy,girl,count)
    pass

fb_file('duihua.txt')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章