1. 程式人生 > >【零基礎】Python3學習課後練習題(二十六)

【零基礎】Python3學習課後練習題(二十六)

本文是跟著魚C論壇小甲魚零基礎學習Python3的視訊學習的,課後題也是跟隨每一課所附屬的題目來做的,根據自己的理解和標準答案記錄的筆記。

第二十九課

動動手:

0.編寫一個程式,接受使用者的輸入並儲存為新的檔案,程式實現如圖:

答:

def file_write(file_name):
    print("請輸入內容【單獨輸入':w'儲存退出】:")
    new_file = open(file_name,'w')
    while True:
        neirong = input()
        if neirong != ':w':
            new_file.write('%s\n' % neirong)
        else:
            break
    new_file.close

file_name = input('請輸入檔名:')
file_write(file_name)

1.編寫一個程式,比較使用者輸入的兩個檔案,如果不同,顯示所有不同處的行號與第一個不同字元的位置,程式實現如圖:

答:

def file_compare(file_name_1,file_name_2):
    file_1 = open(file_name_1,'r')
    file_2 = open(file_name_2,'r')
    count = 0
    different = []
    for each_line in file_1.readline():
        if each_line == file_2.readline():
            count += 1
        else:
            different.append(count)
    file_1.close()
    file_2.close()
    return different

file_name_1 = input('請輸入需要比較的第一個檔名:')
file_name_2 = input('請輸入需要比較的第二個檔名:')
file_compare(file_name_1,file_name_2)
if len(different) == 0:
    print('兩個檔案完全一樣')
else:
    print('兩個檔案有【%d】處不一樣' % len(different))
    for each in different:
        print('第%d行不一樣' % each)

2.編寫一個程式,當用戶輸入檔名和行數(N)後,將該檔案的前N行中內容列印到螢幕上,程式實現如圖:

答:

def file_print(file, num):
    f = open(file)
    print('''檔案%s的前%d行的內容如下:''' % (file, num))
    for i in range(num):
        print(f.readline())
    f.close()


file_name = input('請輸入要開啟的檔案(C:\\test.txt):')
num = int(input('請輸入需要顯示該檔案前幾行:'))
file_print(file_name, num)

3.呃,不得不說我們的使用者越來越來刁鑽了。要求在上一題的基礎上擴充套件,使用者可以隨意輸入需要顯示的行數。(如輸入13:21列印13行到21行,輸入:21列印前21行,輸入21:就列印從21行開始到檔案結尾左右內容)

答:

def file_print(file, paragraph):
    (start, end) = paragraph.split(':')
    if start == '':
        start = 1
    else:
        start = int(start)
    if end == '':
        end = -1
    else:
        end = int(end)

    f = open(file)
    if start == 1:
        if end == -1:
            print('''檔案%s的從開頭到結束的內容如下:''' % file)
        else:
            print('''檔案%s的從開頭到第%d行的內容如下:''' % (file, end))
    else:
        if end == -1:
            print('''檔案%s的從%d行到結束的內容如下:''' % (file, start))
        else:
            print('''檔案%s的從第%d行到第%d行的內容如下:''' % (file, start, end))

    for i in range(start - 1):
        f.readline()
    num = end - start + 1
    if num < 0:
        print(f.read())
    else:
        for i in range(num):
            print(f.readline())
    f.close()


file_name = input(r'請輸入要開啟的檔案(C:\\test.txt):')
paragraph = input('請輸入需要顯示的行數【格式如13:21或:21或21:】:')
while paragraph == '':
    paragraph = input('輸入有誤,請重新輸入:')
file_print(file_name, paragraph)

4.編寫一個程式,實現“全部替換”功能,程式實現如圖

答:

def file_replace(file_name, rep_word, new_word):
    f_read = open(file_name)

    content = []
    count = 0

    for each_line in f_read:
        if rep_word in each_line:
            count += each_line.count(rep_word)  # count感覺應該用這個
            each_line = each_line.replace(rep_word, new_word)
        content.append(each_line)

    decide = input('\n檔案 %s 中共有%s個【%s】\n您確定要把所有的【%s】替換為【%s】嗎?\n【YES/NO】:' \
                   % (file_name, count, rep_word, rep_word, new_word))

    if decide in ['YES', 'Yes', 'yes']:
        f_write = open(file_name, 'w')
        f_write.writelines(content)
        f_write.close()

    f_read.close()


file_name = input('請輸入檔名:')
rep_word = input('請輸入需要替換的單詞或字元:')
new_word = input('請輸入新的單詞或字元:')
file_replace(file_name, rep_word, new_word)