在利用亂數分組, 能否根據已經完成的主程式, 編寫一個網際程式或單機 PyQt5 程式, 讀進相關資料檔案後, 在瀏覽器或 PYQt5 程式中顯示出結果.
import random filename = 'cdbw3_student_list.txt' # 每組人數 num_in_one_group = 11 # 組序由 1 開始 group = 1 # 各班分組後所得數列 c2019 = [] with open(filename) as f: # 讀進全部檔案, 轉進數列, 並同時將各行的 \n 去除 read_data = f.read().splitlines() print("共有 " + str(len(read_data)) + " 位學員") # 利用 shuffle 將數列隨機弄亂 random.shuffle(read_data) for i in range(len(read_data)): # 利用整數相除的餘數進行分組 if i%num_in_one_group == 0: # 列出分隔符號 print("-"*20) print("group " + str(group) +":") # 在分組區隔時重置各組學員數列 group_list = [] print() # 同時列出與分隔標註對應 i 的數列內容 print(read_data[i]) group_list.append(read_data[i]) group = group + 1 else: # 逐一列出同組的其他學員 print(read_data[i]) group_list.append(read_data[i]) if i%num_in_one_group == 0: c2019.append(group_list) # c2019 為該班分組後所得分組數列 print(c2019)
原始程式只有將檔案cdbw3_student_list.txt讀進Python程式中做亂數分組
import random filename = 'cdbw3_student_list.txt' # 每組人數 num_in_one_group = 8 # 組序由 1 開始 group = 1 # 各班分組後所得數列 c2019 = [] with open(filename) as f: # 讀進全部檔案, 轉進數列, 並同時將各行的 \n 去除 read_data = f.read().splitlines() print("共有 " + str(len(read_data)) + " 位學員") # 利用 shuffle 將數列隨機弄亂 random.shuffle(read_data) for i in range(len(read_data)): # 利用整數相除的餘數進行分組 if i%num_in_one_group == 0: # 列出分隔符號 print("-"*20) print("group " + str(group) +":") # 在分組區隔時重置各組學員數列 group_list = [] print() # 同時列出與分隔標註對應 i 的數列內容 group_list.append(read_data[i]) group = group + 1 print("Leader:"+read_data[i]) else: print("Member:"+read_data[i]) if i%num_in_one_group == 0: c2019.append(group_list) # c2019 為該班分組後所得分組數列 print("Group_leader"+str(c2019))
在i 迴圈當中加入if i %num_in_one_group == 0: 檢驗i除上組員數量是否=0
假設等於0 (整除無餘數)
print("Leder:"+read_data[i])組長應是第一位選出來(read_data[i])
假設不等於0 (無整除)
else:其他的人為組員("Member:"+read_data[i])
結果如下
最下方為各組組長的顯示結果