Python第四次作業


實驗要求
實驗1:將字符串寫入文本文件,然后再讀取並輸出:
實驗2:假設已有一個文本文件sample.txt,將其中第13、14兩個字符修改為測試。
實驗3、假設文件data.txt中有若干個整數,所有整數之間使用英文逗號分隔,編寫程序讀寫所有整數,將其按升序排序后再寫入文本文件data_asc.txt中。
實驗4、統計文本文件中最長行的長度和該行的內容。
實驗5、根據當前時間創建文件
在指定目錄中,批量創建3個文件,文件名為%Y%m%d%H%M%S格式的當前時間(精確到秒)。例如,創建文件的時間為2019年4月18日9點18分38秒,則該文件的文件名為20190418091838.txt。為了防止出現重名的文件,在每建立一個文件后,讓線程休眠一秒。
實驗六、使用raise語句拋出異常。模擬幼兒園分蘋果(每人至少分一個蘋果)。輸入蘋果數量及小朋友數量。編程實現當輸入的蘋果數量小於小朋友的數量時,應用raise語句拋出一個ValueError異常。並進行異常處理。

代碼實現
實驗一
file=open(“new.txt”,“w+”)#使用open函數,參數一是文件名,參數二是執行模式,w+代表可讀可寫,若運行目錄下無指定文件則自動新建文件
ls=“hello world”
file.write(ls)#file對象的函數之一,用於寫入文檔字符串,返回字符串長度
file.close()#編輯好保存文件
file=open(“new.txt”,“r”)#重新打開,r代表只讀模式
#刪除以上最后兩步程序正常編譯運行,但輸出為空,思考一下原因?
str=file.read()#調用file.read()函數讀出文檔內容並賦值給變量str
print(str)#s輸出
file.close()#關閉

實驗二
file=open(“simple.txt”,“w+”)
ls=’’‘Always keep an exprising mind and take action’’’
file.write(ls)
file.close()
file=open(“simple.txt”,“r”)
str1=file.read()
l=list(eval(“str1”))#把序列str1轉換為列表,否則無法給序列特定位置賦值。
#賦值
l[13]=“測試”
l[14]=‘測試’
file.close()
d=str(l)#寫入文本文件,把列表轉換為字符串。
file=open(“simple.txt”,“w”)
file.write(d)
file.close()
#重新讀取文檔內容並輸出
file=open(“simple.txt”,“r”)
s=file.read()
print(s)
file.close()
以上程序運用了open函數的w和r這兩種執行模式,索引文檔讀出的具體內容,必須先轉換為列表,寫入文檔必須以字符串的形式,所以用到了字符串和列表的相互轉換。

實驗三
import re #定義正則表達式模式
ls=‘hello 9,7,8,2,6’
k=[] #定義一個空列表
k=re.findall("[\d]+",ls) #通過正則表達式匹配列表ls的數字並賦值給列表k。
#使用冒泡排序算法對序列k重新排序並輸出
for i in range(len(k)):
for j in range(0,len(k)-i-1):
if k[j]>k[j+1]:
k[j],k[j+1]=k[j+1],k[j]
print(k)
正則表達式匹配re.findall返回出字符串里所有匹配成功的子字符串;re.match從開始處匹配字符串,若開始匹配不成功,則返回None,即使后面有匹配成功的;re.search匹配字符串只返回第一個匹配成功的子字符串。

實驗四
f=open(“new.txt”,“w+”)
ls=’’‘Always keep an enterprising mind and take action.
Why are you working so hard?
Because what I want is expensive…
I want to be far away…
The people I like are excellent…
‘’’
f.write(ls)
f.close()
#以上兩步初始化變量longest和k
longest = 0
k=0
f = open(“new.txt”,“r”)
allLines = [line.strip() for line in f.readlines()]#f.readlines讀取所有行返回列表形式賦值給line,並用strip函數清除空白符
f.close()
#遍歷文檔內容,進行比較每行長度比較然后輸出
for line in allLines:
linelen = len(line) #賦值字符串長度
if linelen>longest:
longest = linelen
k=line #記錄linelen字符串內容
print(longest) #輸出字符串長度
print(k) #輸出內容
f.close()

實驗五
import datetime #設置datetime塊
for i in range(3):#循環
path=“C:\Users\Administrator\.PyCharm2018.3\config\scratches\”#定義指定目錄路徑,並在\后再加一個\,這是用了\字符轉義的功能,最后兩個\必須要有
k=datetime.datetime.now().strftime(’%Y%m%d%H%M%S’)+’.txt’== #使用time.strftime()函數接受時間元祖並返回字符串形式賦值給k,datetime.datetime.now()程序運行當下時間,就是time。==
txt = open(path+str(k), “w”)#指定目錄下創建文檔
import time #time塊
time.sleep(1) #同一目錄下文件命名相同會出現編譯錯誤,所以在每建立一個文件后,調用time.sleep()讓線程休眠一秒。

實驗六
class ValueError(Exception):
def init(self,m,n):
self.m=m
self.n=n
def int(self):
print(self.m+“小於”+self.n)
#以上自定義異常類型
def function():
m=int(input(’<<<’))#m為蘋果的個數
n=int(input(’<<<’))#n為人數
try:
if m<n:
raise ValueError(m,n)#使用raise手動拋出異常,raise的唯一參數必須是異常對象或exception的子類。
else:
print("%d個小朋友每個人分得蘋果個數是%d"%(n,m/n))
#捕捉異常
except ValueError:
print(‘m和n的大小關系應設置為m>=n’)
raise
function()#執行函數
————————————————
版權聲明:本文為CSDN博主「初戀的summer」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_44794809/article/details/103172128


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM