【零基礎】Python3學習課後練習題(二十六)
阿新 • • 發佈:2018-12-16
本文是跟著魚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)