目錄
1.從鍵盤輸入一些字符,逐個(gè)把它們寫到指定的文件,直到輸入一個(gè)@為止。
示例1: 請(qǐng)輸入文件名: out.txt 請(qǐng)輸入字符串: Python is open.@ 執(zhí)行代碼后,out.txt文件中內(nèi)容為: Python is open.
2.老王的血壓有些高,醫(yī)生讓家屬給老王測(cè)血壓。老王的女兒記錄了一段時(shí)間的血壓測(cè)量值,在文件xueyajilu.txt中,內(nèi)容示例如下:
2020/7/2 6:00,140,82,136,90,69
2020/7/2 15:28,154,88,155,85,63
2020/7/3 6:30,131,82,139,74,61
2020/7/3 16:49,145,84,139,85,73
2020/7/4 5:03,152,87,131,85,63;
文件內(nèi)各部分含義如下: 測(cè)量時(shí)間,左臂高壓,左臂低壓,右臂高壓,右臂低壓,心率 根據(jù)題意,實(shí)現(xiàn)下述功能。
(1)使用字典和列表類型進(jìn)行數(shù)據(jù)分析,獲取老王的左臂和右臂血壓情況的對(duì)比表,輸出到屏幕上,請(qǐng)注意每列對(duì)齊:
低壓最高值
左臂和右臂的血壓平均值
左臂和右臂的高壓差平均值、低壓差平均值
心率的平均值
(2)上述顯示的五個(gè)項(xiàng)目,如果左臂有大于50%的項(xiàng)目高于右臂,則輸出“結(jié)論:左臂血壓偏高”;如果等于50%的項(xiàng)目高于右臂,則輸出“結(jié)論:左臂血壓與右臂血壓相當(dāng)”;如果小于50%的項(xiàng)目高于右臂,則輸出“結(jié)論:右臂血壓偏高”。
3.假設(shè)當(dāng)前目錄下有一個(gè)文件名為class_score.txt的文本文件,存放著某班學(xué)生的學(xué)號(hào)(第1列)、語(yǔ)文成績(jī)(第2列)和數(shù)學(xué)成績(jī)(第3列),以空格分割各列數(shù)據(jù)。請(qǐng)編寫程序完成下列要求:
(1)分別求出這個(gè)班語(yǔ)文成績(jī)和數(shù)學(xué)成績(jī)的平均分(保留1位小數(shù))并輸出。
(2)找出這個(gè)班兩門課都不及格(<60)的學(xué)生,輸出這些學(xué)生的學(xué)號(hào)、語(yǔ)文成績(jī)和數(shù)學(xué)成績(jī)。
(3)找出這個(gè)班兩門課的平均成績(jī)?yōu)閮?yōu)秀(≥90分)的學(xué)生,輸出這些學(xué)生的學(xué)號(hào)、語(yǔ)文成績(jī)和數(shù)學(xué)成績(jī)和平均成績(jī)。 程序運(yùn)行效果如圖所示。
4.編寫程序,打開任意的文本文件,在指定的位置產(chǎn)生一個(gè)相同文件的副本,即實(shí)現(xiàn)文件的拷貝功能。
5.在自己電腦任一盤符中新建以O(shè)S_Test命名的文件夾,并在該文件夾中新建以.doc .bmp .txt .png .jpeg .xlsx為擴(kuò)展名的文件若干,請(qǐng)寫一個(gè)程序,刪除掉OS_Test目錄里面(不包含子目錄)所有的擴(kuò)展名為.txt的文件,并將刪除掉的文件名稱打印出來(lái)。
1.從鍵盤輸入一些字符,逐個(gè)把它們寫到指定的文件,直到輸入一個(gè)@為止。
示例1: 請(qǐng)輸入文件名: out.txt 請(qǐng)輸入字符串: Python is open.@ 執(zhí)行代碼后,out.txt文件中內(nèi)容為: Python is open.
程序代碼:
print("輸入@后的內(nèi)容將不再輸入到文件中")
try:
word = input("請(qǐng)輸入您想輸入到文件的字符:")
file_write = open("out.txt", "w",encoding="utf-8")
except Exception as reason:
print(reason)
else:
for file_word in word:
if file_word == "@":
break
else:
file_write.write(file_word)
file_write.close()
with open("out.txt", "r",encoding="utf-8") as file_read:
print(file_read.read())
file_read.close()
運(yùn)行結(jié)果:
C:\ProgramData\Anaconda3\python.exe D:/blue7/01.py
輸入@后的內(nèi)容將不再輸入到文件中
請(qǐng)輸入您想輸入到文件的字符:Python is open.@
Python is open.
進(jìn)程已結(jié)束,退出代碼0
2.老王的血壓有些高,醫(yī)生讓家屬給老王測(cè)血壓。老王的女兒記錄了一段時(shí)間的血壓測(cè)量值,在文件xueyajilu.txt中,內(nèi)容示例如下:
-
2020/7/2 6:00,140,82,136,90,69
-
2020/7/2 15:28,154,88,155,85,63
-
2020/7/3 6:30,131,82,139,74,61
-
2020/7/3 16:49,145,84,139,85,73
-
2020/7/4 5:03,152,87,131,85,63;
文件內(nèi)各部分含義如下: 測(cè)量時(shí)間,左臂高壓,左臂低壓,右臂高壓,右臂低壓,心率 根據(jù)題意,實(shí)現(xiàn)下述功能。
(1)使用字典和列表類型進(jìn)行數(shù)據(jù)分析,獲取老王的左臂和右臂血壓情況的對(duì)比表,輸出到屏幕上,請(qǐng)注意每列對(duì)齊:
-
低壓最高值
-
左臂和右臂的血壓平均值
-
左臂和右臂的高壓差平均值、低壓差平均值
-
心率的平均值
程序代碼1:
with open("xueyajilu.txt","w",encoding="gbk") as xueyajilu:
xueyajilu.write(
"2020/7/2 6:00 140,82,136,90,69""\n"
"2020/7/2 15:28 154,88,155,85,63""\n"
"2020/7/3 6:30 131,82,139,74,61""\n"
"2020/7/3 16:49 145,84,139,85,73""\n"
"2020/7/4 5:03 152,87,131,85,63""\n")
with open("xueyajilu.txt","r",encoding="gbk") as xueyajilu_read:
jilu = []
for xueyajilu_dictionary_word in xueyajilu_read.readlines():
xueyajilu_end = xueyajilu_dictionary_word.rstrip("\n")
jilu.append(xueyajilu_end)
xueya_dictionary = {}
count_end = 0
for j in jilu:
count_end += 1
xueya_dictionary[count_end] = [j]
diya_maxs = []
for diya in range(1,6):
diya_max = []
diya_max = xueya_dictionary[diya]
diya_maxs += diya_max
diya_count = []
for count in range(0,5):
diya_count.append(diya_maxs[count][19:21])
diya_count.append(diya_maxs[count][26:28])
print("低壓最高值為:",max(diya_count))
for count in range(0,5):
diya_count.append(diya_maxs[count][15:18])
diya_count.append(diya_maxs[count][22:25])
diya_count_list_int = sum(list(map(int,diya_count)))
print("左臂和右臂的血壓平均值為:","%.2f"%(diya_count_list_int/len(diya_count)))
gaoyaa_count = []
gaoyaa_count_fu = []
for gaoya_count in range(0,5):
gaoyaa_count.append(diya_maxs[gaoya_count][15:18])
gaoyaa_count_fu.append(diya_maxs[gaoya_count][22:25])
gaoyaa_count_int_list = sum(list(map(int,gaoyaa_count)))
gaoyaa_count_fu_int_list =sum(list(map(int,gaoyaa_count_fu)))
print("左右臂高壓差平均值:",(gaoyaa_count_int_list-gaoyaa_count_fu_int_list)/5)
diyaya_left = []
diyaya_right = []
for diyaya_count in range(0,5):
diyaya_left.append(diya_maxs[diyaya_count][19:21])
diyaya_right.append(diya_maxs[diyaya_count][26:28])
diyaya_left_list_int = sum(list(map(int,diyaya_left)))
diyaya_right_list_int = sum(list(map(int,diyaya_right)))
print("左右臂低壓差平均值:",(diyaya_left_list_int-diyaya_right_list_int)/len(diyaya_right))
xinlv = []
for xinlv_count in range(0,5):
xinlv.append(diya_maxs[xinlv_count][29:31])
xinlv_int_lis = sum(list(map(int,xinlv)))
print("心率平均值:",xinlv_int_lis/len(xinlv))
運(yùn)行結(jié)果1:
C:\ProgramData\Anaconda3\python.exe D:/blue7/02.py
低壓最高值為: 90
左臂和右臂的血壓平均值為: 113.20
左右臂高壓差平均值: 4.4
左右臂低壓差平均值: 0.8
心率平均值: 65.8
進(jìn)程已結(jié)束,退出代碼0
程序代碼2:
print("對(duì)比表"" ""左臂"" ""右臂")
left = []
right = []
with open("xueyajilu.txt","w",encoding="gbk") as xueyajilu:
xueyajilu.write(
"2020/7/2 6:00 140,82,136,90,69""\n"
"2020/7/2 15:28 154,88,155,85,63""\n"
"2020/7/3 6:30 131,82,139,74,61""\n"
"2020/7/3 16:49 145,84,139,85,73""\n"
"2020/7/4 5:03 152,87,131,85,63""\n")
with open("xueyajilu.txt","r",encoding="gbk") as xueyajilu_read:
jilu = []
for xueyajilu_dictionary_word in xueyajilu_read.readlines():
xueyajilu_end = xueyajilu_dictionary_word.rstrip("\n")
jilu.append(xueyajilu_end)
xueya_dictionary = {}
count_end = 0
for j in jilu:
count_end += 1
xueya_dictionary[count_end] = [j]
diya_maxs = []
for diya in range(1,6):
diya_max = []
diya_max = xueya_dictionary[diya]
diya_maxs += diya_max
diya_count_left = []
diya_count_right = []
for count in range(0,5):
diya_count_left.append(diya_maxs[count][19:21])
diya_count_right.append(diya_maxs[count][26:28])
print("低壓最高值 ",max(diya_count_left)," ",max(diya_count_right))
right.append((max(diya_count_right)))
left.append((max(diya_count_left)))
diya_count_left_int_list = sum(list(map(int,diya_count_left)))
diya_count_right_int_list = sum(list(map(int,diya_count_right)))
print("低壓平均值 ",diya_count_left_int_list/len(diya_count_left),
" ",diya_count_right_int_list/len(diya_count_right))
left.append("%.1f"%(diya_count_left_int_list/len(diya_count_left)))
right.append("%.1f"%(diya_count_right_int_list/len(diya_count_right)))
xueya_average_left = []
xueya_average_right = []
for average_count in range(0,5):
xueya_average_left.append(diya_maxs[average_count][15:18])
xueya_average_left.append(diya_maxs[average_count][19:21])
xueya_average_right.append(diya_maxs[average_count][22:25])
xueya_average_right.append(diya_maxs[average_count][26:28])
xueya_average_left_int_list = sum(list(map(int, xueya_average_left)))
xueya_average_right_int_list = sum(list(map(int,xueya_average_right)))
print("血壓平均值 ",xueya_average_left_int_list/len(xueya_average_left),
" ",xueya_average_right_int_list/len(xueya_average_right))
left.append("%.1f"%(xueya_average_left_int_list/len(xueya_average_left)))
right.append("%.1f"%(xueya_average_right_int_list/len(xueya_average_right)))
xueya_left = []
xueya_right = []
for xueya_count in range(0,5):
xueya_left.append(diya_maxs[xueya_count][15:18])
xueya_right.append(diya_maxs[xueya_count][22:25])
xueya_left_int_list = sum(list(map(int,xueya_left)))
xueya_right_int_list = sum(list(map(int,xueya_right)))
print("高壓平均值 ",xueya_left_int_list/len(xueya_left),
" ",xueya_right_int_list/len(xueya_left))
print("壓差平均值 ","%.1f"%(xueya_left_int_list/len(xueya_left)-diya_count_left_int_list/len(diya_count_left)),
" ",xueya_right_int_list/len(xueya_left)-diya_count_right_int_list/len(diya_count_right))
left.append("%.1f"%(xueya_left_int_list/len(xueya_left)))
left.append("%.1f"%(xueya_left_int_list/len(xueya_left)-diya_count_left_int_list/len(diya_count_left)))
right.append("%.1f"%(xueya_right_int_list/len(xueya_left)))
right.append("%.1f"%(xueya_right_int_list/len(xueya_left)-diya_count_right_int_list/len(diya_count_right)))
xinlv = []
for xinlv_count in range(0,5):
xinlv.append(diya_maxs[xinlv_count][29:31])
xinlv_int_lis = sum(list(map(int,xinlv)))
print("心率平均值:",xinlv_int_lis/len(xinlv))
運(yùn)行結(jié)果2:
C:\ProgramData\Anaconda3\python.exe D:/blue7/021.py
對(duì)比表 左臂 右臂
低壓最高值 88 90
低壓平均值 84.6 83.8
血壓平均值 114.5 111.9
高壓平均值 144.4 140.0
壓差平均值 59.8 56.2
心率平均值: 65.8
進(jìn)程已結(jié)束,退出代碼0
(2)上述顯示的五個(gè)項(xiàng)目,如果左臂有大于50%的項(xiàng)目高于右臂,則輸出“結(jié)論:左臂血壓偏高”;如果等于50%的項(xiàng)目高于右臂,則輸出“結(jié)論:左臂血壓與右臂血壓相當(dāng)”;如果小于50%的項(xiàng)目高于右臂,則輸出“結(jié)論:右臂血壓偏高”。
程序代碼:
print("對(duì)比表"" ""左臂"" ""右臂")
left = []
right = []
with open("xueyajilu.txt","w",encoding="gbk") as xueyajilu:
xueyajilu.write(
"2020/7/2 6:00 140,82,136,90,69""\n"
"2020/7/2 15:28 154,88,155,85,63""\n"
"2020/7/3 6:30 131,82,139,74,61""\n"
"2020/7/3 16:49 145,84,139,85,73""\n"
"2020/7/4 5:03 152,87,131,85,63""\n")
with open("xueyajilu.txt","r",encoding="gbk") as xueyajilu_read:
jilu = []
for xueyajilu_dictionary_word in xueyajilu_read.readlines():
xueyajilu_end = xueyajilu_dictionary_word.rstrip("\n")
jilu.append(xueyajilu_end)
xueya_dictionary = {}
count_end = 0
for j in jilu:
count_end += 1
xueya_dictionary[count_end] = [j]
diya_maxs = []
for diya in range(1,6):
diya_max = []
diya_max = xueya_dictionary[diya]
diya_maxs += diya_max
diya_count_left = []
diya_count_right = []
for count in range(0,5):
diya_count_left.append(diya_maxs[count][19:21])
diya_count_right.append(diya_maxs[count][26:28])
print("低壓最高值 ",max(diya_count_left)," ",max(diya_count_right))
right.append((max(diya_count_right)))
left.append((max(diya_count_left)))
diya_count_left_int_list = sum(list(map(int,diya_count_left)))
diya_count_right_int_list = sum(list(map(int,diya_count_right)))
print("低壓平均值 ",diya_count_left_int_list/len(diya_count_left),
" ",diya_count_right_int_list/len(diya_count_right))
left.append("%.1f"%(diya_count_left_int_list/len(diya_count_left)))
right.append("%.1f"%(diya_count_right_int_list/len(diya_count_right)))
xueya_average_left = []
xueya_average_right = []
for average_count in range(0,5):
xueya_average_left.append(diya_maxs[average_count][15:18])
xueya_average_left.append(diya_maxs[average_count][19:21])
xueya_average_right.append(diya_maxs[average_count][22:25])
xueya_average_right.append(diya_maxs[average_count][26:28])
xueya_average_left_int_list = sum(list(map(int, xueya_average_left)))
xueya_average_right_int_list = sum(list(map(int,xueya_average_right)))
print("血壓平均值 ",xueya_average_left_int_list/len(xueya_average_left),
" ",xueya_average_right_int_list/len(xueya_average_right))
left.append("%.1f"%(xueya_average_left_int_list/len(xueya_average_left)))
right.append("%.1f"%(xueya_average_right_int_list/len(xueya_average_right)))
xueya_left = []
xueya_right = []
for xueya_count in range(0,5):
xueya_left.append(diya_maxs[xueya_count][15:18])
xueya_right.append(diya_maxs[xueya_count][22:25])
xueya_left_int_list = sum(list(map(int,xueya_left)))
xueya_right_int_list = sum(list(map(int,xueya_right)))
print("高壓平均值 ",xueya_left_int_list/len(xueya_left),
" ",xueya_right_int_list/len(xueya_left))
print("壓差平均值 ","%.1f"%(xueya_left_int_list/len(xueya_left)-diya_count_left_int_list/len(diya_count_left)),
" ",xueya_right_int_list/len(xueya_left)-diya_count_right_int_list/len(diya_count_right))
left.append("%.1f"%(xueya_left_int_list/len(xueya_left)))
left.append("%.1f"%(xueya_left_int_list/len(xueya_left)-diya_count_left_int_list/len(diya_count_left)))
right.append("%.1f"%(xueya_right_int_list/len(xueya_left)))
right.append("%.1f"%(xueya_right_int_list/len(xueya_left)-diya_count_right_int_list/len(diya_count_right)))
xinlv = []
for xinlv_count in range(0,5):
xinlv.append(diya_maxs[xinlv_count][29:31])
xinlv_int_lis = sum(list(map(int,xinlv)))
print("心率平均值:",xinlv_int_lis/len(xinlv))
count = 0
count1 = 0
for i in range(0,5):
if left[i]>right[i]:
count += 1
elif left[i]<right[i]:
count1 += 1
if count > count1:
print("左臂血壓偏高")
elif count1 > count:
print("右臂血壓偏高")
elif count == count1:
print("左右臂血壓相當(dāng)")
運(yùn)行結(jié)果:
C:\ProgramData\Anaconda3\python.exe D:/blue7/021.py
對(duì)比表 左臂 右臂
低壓最高值 88 90
低壓平均值 84.6 83.8
血壓平均值 114.5 111.9
高壓平均值 144.4 140.0
壓差平均值 59.8 56.2
心率平均值: 65.8
左臂血壓偏高
進(jìn)程已結(jié)束,退出代碼0
3.假設(shè)當(dāng)前目錄下有一個(gè)文件名為class_score.txt的文本文件,存放著某班學(xué)生的學(xué)號(hào)(第1列)、語(yǔ)文成績(jī)(第2列)和數(shù)學(xué)成績(jī)(第3列),以空格分割各列數(shù)據(jù)。請(qǐng)編寫程序完成下列要求:
(1)分別求出這個(gè)班語(yǔ)文成績(jī)和數(shù)學(xué)成績(jī)的平均分(保留1位小數(shù))并輸出。
(2)找出這個(gè)班兩門課都不及格(<60)的學(xué)生,輸出這些學(xué)生的學(xué)號(hào)、語(yǔ)文成績(jī)和數(shù)學(xué)成績(jī)。
(3)找出這個(gè)班兩門課的平均成績(jī)?yōu)閮?yōu)秀(≥90分)的學(xué)生,輸出這些學(xué)生的學(xué)號(hào)、語(yǔ)文成績(jī)和數(shù)學(xué)成績(jī)和平均成績(jī)。 程序運(yùn)行效果如圖所示。
程序代碼:
with open("class_score.txt","w",encoding= "utf-8") as open_file:
open_file.write("20212501122 90 90""\n"
"20212501123 56 58""\n"
"20212501124 54 44""\n"
"20212501125 59 84""\n")
open_file.close()
with open("class_score.txt","r",encoding="utf-8") as read_file:
jilu = []
jilu_math = []
jilu_chinese = []
for message in read_file:
message_end = message.rstrip("\n")
jilu.append(message_end)
for j in range(0,4):
jilu_chinese.append(jilu[j][12:14])
jilu_math.append(jilu[j][14:17])
jilu_chinese_int_list = sum(list(map(int,jilu_chinese)))
jilu_math_int_list = sum(list(map(int, jilu_math)))
print("語(yǔ)文平均成績(jī)?yōu)?","%.1f"%(jilu_chinese_int_list/len(jilu)))
print("數(shù)學(xué)平均成績(jī)?yōu)?", "%.1f"%(jilu_math_int_list/len(jilu)))
for i in range(0,3):
if jilu[i][12:14] < "60" and jilu[i][14:17] < "60":
print("兩門成績(jī)都不及格的學(xué)生:")
print(jilu[i])
if int(jilu[i][12:14])+int(jilu[i][14:17])/2 >= 90:
print("平均成績(jī)?yōu)閮?yōu)秀的學(xué)生:")
print(jilu[i],int(jilu[i][12:14])+int(jilu[i][14:17])/2)
運(yùn)行結(jié)果:
C:\ProgramData\Anaconda3\python.exe D:/blue7/03.py
語(yǔ)文平均成績(jī)?yōu)? 64.8
數(shù)學(xué)平均成績(jī)?yōu)? 69.0
平均成績(jī)?yōu)閮?yōu)秀的學(xué)生:
20212501122 90 90 135.0
兩門成績(jī)都不及格的學(xué)生:
20212501123 56 58
兩門成績(jī)都不及格的學(xué)生:
20212501124 54 44
進(jìn)程已結(jié)束,退出代碼0
4.編寫程序,打開任意的文本文件,在指定的位置產(chǎn)生一個(gè)相同文件的副本,即實(shí)現(xiàn)文件的拷貝功能。
程序代碼:
import shutil
import re
import os
try:
path_old = input("請(qǐng)輸入您要復(fù)制的文本路徑:")
os.path.exists(path_old)
if re.findall(".txt|doc|docx|xlsx|pptx|htm|html|PDF",path_old):
print("文件有效!")
else:
raise ValueError("文件格式錯(cuò)誤!")
except ValueError as reason:
print(reason)
else:
shutil.copy(path_old,path_old+"-(副本)")
運(yùn)行結(jié)果:
C:\ProgramData\Anaconda3\python.exe D:/blue7/04.py
請(qǐng)輸入您要復(fù)制的文本路徑:D:\藍(lán)橋云.txt
文件有效!
進(jìn)程已結(jié)束,退出代碼0
5.在自己電腦任一盤符中新建以O(shè)S_Test命名的文件夾,并在該文件夾中新建以.doc .bmp .txt .png .jpeg .xlsx為擴(kuò)展名的文件若干,請(qǐng)寫一個(gè)程序,刪除掉OS_Test目錄里面(不包含子目錄)所有的擴(kuò)展名為.txt的文件,并將刪除掉的文件名稱打印出來(lái)。
程序代碼:
from os.path import isdir,join,splitext
from os import remove,listdir
filetypes = ".txt"
def delfile(directory):
if not isdir(directory):
return
for filename in listdir(directory):
name,ext = splitext(filename)
if ext == filetypes:
print(filename)
temp = join(directory,filename)
if isdir(temp):
delfile(temp)
remove(temp)
delfile("D:\OS_Test")
運(yùn)行結(jié)果:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-476922.html
C:\ProgramData\Anaconda3\python.exe D:/blue7/05.py
藍(lán)橋云.txt
進(jìn)程已結(jié)束,退出代碼0
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-476922.html
到了這里,關(guān)于Python經(jīng)典基礎(chǔ)習(xí)題(文件與文件夾操作)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!