1. 程式人生 > >python從入門到實踐第十章的練習題作業

python從入門到實踐第十章的練習題作業

'''
10-1 Python 學習筆記:在文字編輯器中新建一個檔案,寫幾句話來總結一下你至
此學到的 Python 知識,其中每一行都以“In Python you can”打頭。將這個檔案命名為
learning_python.txt,並將其儲存到為完成本章練習而編寫的程式所在的目錄中。編寫一
個程式,它讀取這個檔案,並將你所寫的內容列印三次:第一次列印時讀取整個檔案;
第二次列印時遍歷檔案物件;第三次列印時將各行儲存在一個列表中,再在 with 程式碼
塊外列印它們
'''

print('All file:')
with open('learning_python.txt') as file_object:
	contents = file_object.read()
print(contents)

print('Per line:')
with open('learning_python.txt') as file_object:
	for line in file_object:
		print(line.rstrip())

print('reanlines and store in a list:')
with open('learning_python.txt') as file_object:
	lines = file_object.readlines()
print(lines)
'''
10-2 C 語言學習筆記:可使用方法 replace()將字串中的特定單詞都替換為另一
個單詞。下面是一個簡單的示例,演示瞭如何將句子中的'dog'替換為'cat':
>>> message = "I really like dogs."
>>> message.replace('dog', 'cat')
'I really like cats.'
讀取你剛建立的檔案 learning_python.txt 中的每一行,將其中的 Python 都替換為另
一門語言的名稱,如 C。將修改後的各行都列印到螢幕上。
'''
print('Per line and replace:')
with open('learning_python.txt') as file_object:
	for line in file_object:
		print(line.replace('Python','C').replace('\n',''))
'''
10-3 訪客:編寫一個程式,提示使用者輸入其名字;使用者作出響應後,將其名字寫
入到檔案 guest.txt 中。
'''

message = input('Hello, plesse input your name, and I will write it into a file:')
filename = 'guest.txt'
with open(filename,'a') as file_obj:
	file_obj.write(message)
'''
10-4 訪客名單:編寫一個 while 迴圈,提示使用者輸入其名字。使用者輸入其名字後,
在螢幕上列印一句問候語,並將一條訪問記錄新增到檔案 guest_book.txt 中。確保這個
檔案中的每條記錄都獨佔一行。
'''
file_name = 'guest_book.txt'

while True:
	message = input('Please input guests\' name one by one(\'q\' for quit):)' )
	if message=='q':
		break
	else:
		with open(file_name,'a') as file_obj:
			file_obj.write(message+'\n')

print('I have write all the name(If you have written).')
'''
10-5 關於程式設計的調查:編寫一個 while 迴圈,詢問使用者為何喜歡程式設計。每當使用者輸
入一個原因後,都將其新增到一個儲存所有原因的檔案中。
'''

file_name = 'reasons.txt'
with open(file_name,'a') as file_obj:
	file_obj.write('The reasons for programming:'+'\n')

while True:
	message = input('Hello, what\'s the reasons for your programming?(\'q\'for quit)')
	if message == 'q': 
		break
	else:
		with open(file_name,'a') as file_obj:
			file_obj.write(message+'\n')
'''
10-6 加法運算:提示使用者提供數值輸入時,常出現的一個問題是,使用者提供的是
文字而不是數字。在這種情況下,當你嘗試將輸入轉換為整數時,將引發 TypeError 異
常。編寫一個程式,提示使用者輸入兩個數字,再將它們相加並列印結果。在使用者輸入的
任何一個值不是數字時都捕獲 TypeError 異常,並列印一條友好的錯誤訊息。對你編寫
的程式進行測試:先輸入兩個數字,再輸入一些文字而不是數字。
'''
'''
while True:
	num1 = input('Please input the first number:(\'q\' for quit)')
	if num1 == 'q':
		break
    try :
		num1_int = int(num1)
	except ValueError:
		print('!!!!Error!!!!!Please input numbers!')
        continue
	num2 = input('Please input the second number:(\'q\' for quit)')
	try :
		num2_int = int(num2)
	except ValueError:
		print('!!!!Error!!!!!Please input numbers!')
        continue
    print(num1_int + num2_int)
'''


'''
這是看了評論的修改版
'''

while True:
	num1 = input('Please input the first number:(\'q\' for quit)')
	if num1 == 'q':
		break
	try:
		num1_int = int(num1)
	except ValueError:
		print('!!!!Error!!!!!Please input numbers!')
		continue
	num2 = input('Please input the second number:(\'q\' for quit)')
	try:
		num2_int = int(num2)
	except ValueError:
		print('!!!!Error!!!!!Please input numbers!')
		continue
	print(num1_int + num2_int)
		

		
'''
10-7 加法計算器:將你為完成練習 10-6 而編寫的程式碼放在一個 while 迴圈中,讓
使用者犯錯(輸入的是文字而不是數字)後能夠繼續輸入數字。
'''
while True:
	num1 = input('Please input the first number:(\'q\' for quit)')
	if num1 == 'q':
		break
	num2 = input('Please input the second number:(\'q\' for quit)')
	if num2 == 'q':
		break
	try :
		print(int(num1)+int(num2))
	except ValueError:
		print('!!!!Error!!!!!Please input two numbers!')
'''
10-8 貓和狗:建立兩個檔案 cats.txt 和 dogs.txt,在第一個檔案中至少儲存三隻貓的
名字,在第二個檔案中至少儲存三條狗的名字。編寫一個程式,嘗試讀取這些檔案,並
將其內容列印到螢幕上。將這些程式碼放在一個 try-except 程式碼塊中,以便在檔案不存
在時捕獲 FileNotFound 錯誤,並列印一條友好的訊息。將其中一個檔案移到另一個地
方,並確認 except 程式碼塊中的程式碼將正確地執行。
'''

while True:
	open_file_name = input('please input a file name to open it.(\'q\' for quit):)')
	if open_file_name == 'q':
		break
	try:
		with open(open_file_name) as file_obj:
			contents = file_obj.read()
	except FileNotFoundError:
		print('Sorry, I can not find your file.')
	else:
		print(contents)
'''
10-9 沉默的貓和狗:修改你在練習 10-8 中編寫的 except 程式碼塊,讓程式在檔案不
存在時一言不發。
'''
while True:
	open_file_name = input('please input a file name to open it.(\'q\' for quit):)')
	if open_file_name == 'q':
		break
	try:
		with open(open_file_name) as file_obj:
			contents = file_obj.read()
	except FileNotFoundError:
		pass
	else:
		print(contents)
'''
10-10 常見單詞:訪問專案 Gutenberg(http://gutenberg.org/),並找一些你想分析的
圖書。下載這些作品的文字檔案或將瀏覽器中的原始文字複製到文字檔案中。
你可以使用方法 count()來確定特定的單詞或短語在字串中出現了多少次。例如,
下面的程式碼計算'row'在一個字串中出現了多少次:
>>> line = "Row, row, row your boat"
>>> line.count('row')
2
>>> line.lower().count('row')
3
請注意,通過使用 lower()將字串轉換為小寫,可捕捉要查詢的單詞出現的所有
次數,而不管其大小寫格式如何。
編寫一個程式,它讀取你在專案 Gutenberg 中獲取的檔案,並計算單詞'the'在每
個檔案中分別出現了多少次。
'''

#我還是用一個文字練手好了

file_name = 'pride_and_prejudice.txt'
with open(file_name) as file_obj:
	contents = file_obj.read()

print('pride_and_prejudice use \'me\' for '+str(contents.count('me'))+' times')
#print(contents)

'''
10-11 喜歡的數字:編寫一個程式,提示使用者輸入他喜歡的數字,並使用
json.dump()將這個數字儲存到檔案中。再編寫一個程式,從檔案中讀取這個值,並打
印訊息“I know your favourite number! It’s _____.”。
'''
import json

favourate_num = input('Please input your favourate number:')
with open('favourate_num.json','w') as f_obj:
	json.dump('I know your favorite number! It’s '+favourate_num,f_obj)

with open('favourate_num.json') as f_obj:
	contents = json.load(f_obj)

print(contents)
'''
10-12 記住喜歡的數字:將練習 10-11 中的兩個程式合而為一。如果儲存了使用者喜
歡的數字,就向用戶顯示它,否則提示使用者輸入他喜歡的數字並將其儲存到檔案中。運
行這個程式兩次,看看它是否像預期的那樣工作。
'''

import json

filename = 'favourate_num.json'

try:
	with open(filename) as f_obj:
		contents = json.load(f_obj)
	
except FileNotFoundError:
	favourate_num = input('please input your favourite number:')
	with open(filename,'w') as f_obj:
		json.dump('I know your favorite number! It’s '+favourate_num,f_obj)
	with open(filename) as f_obj:
		contents = json.load(f_obj)

print(contents)