gbk和 utf8 檔案夾里的檔案分別適用于 Windows和 mac os(linux)。
1) id.txt里面放著學號和姓名,沒有排序。
2) finalscore里面放著學生的做題資訊。其中第三欄或第四欄是做題數量。
3) 分數計算辦法: 做出1題得50,2題得60,此后每做一題加4分。
4) 要求生成id.txt里面所有學生的成績,按學號排序輸出到結果檔案result.txt。如果在 finalscore里面找不到學生的做題記錄,該生題數和成績都記0。
5) result.txt格式如:
學號 姓名 題數 分數
1700943357 王小賓 0 0
1700943359 李旭然 0 0
1700943383 王筱翕 2 60
1700943405 陳楷倫 0 0
1700943465 包喬奔 5 72
1700943469 巫俊杰 3 64
1700943472 鐘典余 0 0
1700943481 劉玨辰 0 0
1700943523 趙盛淙 7 80
6) 將result.txt中的資訊匯入excel表格(文本匯入、拷貝粘貼即可)。
7) id.txt里面沒有的學生,不用管。
注意:
源檔案和目標檔案里面的分隔符,都不是空格,都是制表符 \t (Tab)。注意看finalscore.txt里面,有連著兩個 Tab 的情況,比如下面學號和做題數之間是2個tab:
4 1700943836 9
也許你需要關注這一點,也許并不需要。
8) rusult.txt和最終生成的 excel檔案壓縮后上傳,以自己學號作為壓縮檔案的檔案名。
uj5u.com熱心網友回復:
讀出ID.txt和finalscore 判斷出題和分數,寫入result,也可以寫到scv,再匯入exceluj5u.com熱心網友回復:
from openpyxl import Workbookfrom openpyxl.worksheet.table import Table, TableStyleInfo
total_dict=[]
f1=open ('id.txt','r',encoding='UTF-8-sig')
for line in f1.readlines():
tempdict={'學號':"",'姓名':"",'題數':0,'分數':0,}
lines=line.split("\t")
#print(lines[0],lines[1])
lines[0]=lines[0].strip()
lines[1]=lines[1].strip()
tempdict['學號']=lines[0]
tempdict['姓名']=lines[1]
total_dict.append(tempdict)
f1.close()
f2=open ('finalscore.txt','r',encoding='utf-8')
for line in f2.readlines():
lines=line.split("\t")
quesnum=int(lines[2])
stid=lines[1]
score=(lambda quesnum:0 if quesnum==0 else 50 if quesnum==1 else 60 if quesnum==2 else 60+(quesnum-2)*4 )
getsco=score(quesnum)
for dict1 in total_dict:
if stid==dict1['學號']:
dict1['題數']=quesnum
dict1['分數']=getsco
f2.close()
f3=open('result.txt','w')
f3.write('學號'+"\t"+'姓名'+"\t"+'題數'+"\t"+'分數'+"\n")
for dict1 in total_dict:
f3.write(dict1['學號']+"\t"+dict1['姓名']+"\t"+str(dict1['題數'])+"\t"+str(dict1['分數'])+"\n")
f3.close()
wb = Workbook()
ws = wb.active
ws.append(['學號','姓名','題數','分數'])
for dict1 in total_dict:
ws.append(list(dict1.values()))
tab = Table(displayName="Table1", ref="A1:D"+str(len(total_dict)+1)) #名稱管理器
# 'TableStyleLight11' 1-21 還有此樣式 "TableStyleMedium9" 1-28 TableStyleDark1 1-11
# showFirstColumn=True,
# showLastColumn=True, showRowStripes=True, showColumnStripes=True)
# 第一行是否和樣式第一行顏色一樣,第二列是否···
# 是否隔行換色,是否隔列換色
style = TableStyleInfo(name='TableStyleDark11', showFirstColumn=True,
showLastColumn=True, showRowStripes=False, showColumnStripes=True)
tab.tableStyleInfo = style
ws.add_table(tab)
wb.save('s2.xlsx')
uj5u.com熱心網友回復:
id.txt1700943357 王小賓
1700943359 李旭然
1700943383 王筱翕
1700943405 陳楷倫
1700943465 包喬奔
1700943469 巫俊杰
1700943472 鐘典余
1700943481 劉玨辰
1700943523 趙盛淙
finalscore.txt
0 1700943357 2
0 1700943359 0
0 1700943383 2
0 1700943405 0
0 1700943465 5
0 1700943469 3
0 1700943472 0
0 1700943481 0
0 1700943523 7
result.txt
學號 姓名 題數 分數
1700943357 王小賓 2 60
1700943359 李旭然 0 0
1700943383 王筱翕 2 60
1700943405 陳楷倫 0 0
1700943465 包喬奔 5 72
1700943469 巫俊杰 3 64
1700943472 鐘典余 0 0
1700943481 劉玨辰 0 0
1700943523 趙盛淙 7 80
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63804.html
