中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做網(wǎng)站余姚做運(yùn)營需要具備什么能力

做網(wǎng)站余姚,做運(yùn)營需要具備什么能力,如何創(chuàng)立自己的網(wǎng)址,網(wǎng)站網(wǎng)站開發(fā)的公司電話說明 :經(jīng)過多次交互,前后花了幾個(gè)小時(shí),總算完成了基本功能。如果做到按不同層次分配考場(chǎng),一鍵出打印結(jié)果就完美了。如果不想看中間“艱苦”的過程,請(qǐng)直接跳到“最后結(jié)果”及“食用方法”。中間過程還省略了一部分交互&…

????????說明 :經(jīng)過多次交互,前后花了幾個(gè)小時(shí),總算完成了基本功能。如果做到按不同層次分配考場(chǎng),一鍵出打印結(jié)果就完美了。如果不想看中間“艱苦”的過程,請(qǐng)直接跳到“最后結(jié)果”及“食用方法”。中間過程還省略了一部分交互,gpt-4o一個(gè)線程限制了會(huì)話的次數(shù)(100),大概開了三個(gè)線程完成了任務(wù)。在此過程中自己可能提示詞描述不夠準(zhǔn)確。以后在描述問題時(shí)還需要改進(jìn),后續(xù)添加交互,打包為exe

????????在日常的教務(wù)活動(dòng)中,考場(chǎng)安裝很費(fèi)時(shí)的事。學(xué)校平時(shí)考場(chǎng)安排,不像大型考試每考室人數(shù)固定,有時(shí)還會(huì)按不同層次的學(xué)生安排考場(chǎng),要求比較多,排定后還需手工調(diào)整。

第一次給的提示語:

?電子表格”考場(chǎng)安排demo.xlsx“的字段為:班級(jí)、準(zhǔn)考證號(hào)、學(xué)生姓名、考場(chǎng)、考號(hào)。其中考場(chǎng)、考號(hào)需要程序來安排的,請(qǐng)按以下要求給出python程序。1、總考場(chǎng)數(shù)為24個(gè)2、請(qǐng)平均分配每考場(chǎng)人數(shù)3、每個(gè)考場(chǎng)的座位號(hào)從1開始編號(hào),依次為2, 3, 4,...。4、隨機(jī)安排學(xué)生,注意是隨機(jī),但要保證在一個(gè)考場(chǎng)中相鄰兩條記錄,它們班級(jí)字段的值不相等。5、將安排好的結(jié)果以“考場(chǎng)安排結(jié)果.xlsx"保存

經(jīng)過了幾次迭代:

?上面的程序執(zhí)行了很長時(shí)間,即沒有結(jié)果,也沒有出錯(cuò)提示錯(cuò)誤仍然存在如果每考場(chǎng)的學(xué)生班號(hào)隨機(jī)一點(diǎn)就更好了

此時(shí)出現(xiàn)警告

?A value is trying to be set on a copy of a slice from a DataFrame

直接將警告提交給gpt

?當(dāng)我重新運(yùn)行以上程序時(shí),雖然沒有了警告提示,運(yùn)行很長時(shí)間沒有結(jié)果

這時(shí)給出了正確的結(jié)果

?import pandas as pdimport randomfrom openpyxl import Workbookimport numpy as np??def load_data(filename):return pd.read_excel(filename)??def save_data(df, filename):df.to_excel(filename, index=False)??def assign_seats(df, total_halls):# 按班級(jí)分組并隨機(jī)打亂每個(gè)班級(jí)內(nèi)部的順序grouped = df.groupby('班級(jí)')groups = [group.sample(frac=1).reset_index(drop=True) for _, group in grouped]?# 創(chuàng)建調(diào)度器隊(duì)列,初始化為每個(gè)班級(jí)的iteratoriterators = [iter(group.iterrows()) for group in groups]?arranged_data = []hall_number = 1seat_number = 1?total_students = len(df)students_per_hall = total_students // total_hallsextra_students = total_students % total_halls?while iterators:random.shuffle(iterators)for it in iterators[:]: ?# 遍歷每個(gè)迭代器try:_, student = next(it)student_data = student.to_dict()student_data["考場(chǎng)"] = hall_numberstudent_data["考號(hào)"] = seat_numberarranged_data.append(student_data)?seat_number += 1?if seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1?if hall_number > total_halls:hall_number = 1except StopIteration:iterators.remove(it) ?# 當(dāng)前iterator已遍歷完全,移除它?return arranged_data??def main():input_filename = "考場(chǎng)安排demo.xlsx"output_filename = "考場(chǎng)安排結(jié)果.xlsx"?total_halls = 24?df = load_data(input_filename)arranged_students = assign_seats(df, total_halls)arranged_df = pd.DataFrame(arranged_students)?save_data(arranged_df, output_filename)??if __name__ == "__main__":main()

重新給了提示語:座位號(hào)改為01、02、03...,添加了時(shí)間戳。

?電子表格”考場(chǎng)安排demo.xlsx“的字段為:班級(jí)、準(zhǔn)考證號(hào)、學(xué)生姓名、考場(chǎng)、考號(hào)。其中考場(chǎng)、考號(hào)需要程序來安排的,請(qǐng)按以下要求給出python程序。1、總考場(chǎng)數(shù)為24個(gè)2、請(qǐng)平均分配每考場(chǎng)人數(shù)3、每個(gè)考場(chǎng)的座位號(hào)從01開始編號(hào),依次為02, 03, 04,...。4、隨機(jī)安排學(xué)生,注意是隨機(jī),但要保證在一個(gè)考場(chǎng)中相鄰兩條記錄,它們班級(jí)字段的值不相等。5、將安排好的結(jié)果以“考場(chǎng)安排結(jié)果+時(shí)間戳.xlsx"保存

很高興聽到程序已經(jīng)很好地滿足了你的要求。為了確保最終程序完善且清晰,我將提供最終版本的Python代碼,該代碼完整處理各項(xiàng)要求,并生成考場(chǎng)安排結(jié)果文件:

  1. 總考場(chǎng)數(shù)為24個(gè)。

  2. 平均分配每考場(chǎng)人數(shù)。

  3. 每個(gè)考場(chǎng)的座位號(hào)從01開始編號(hào),依次為02, 03, 04,...。

  4. 隨機(jī)安排學(xué)生,保證在一個(gè)考場(chǎng)中,相鄰兩條記錄的班級(jí)字段的值不相等。

  5. 將安排好的結(jié)果以“考場(chǎng)安排結(jié)果+時(shí)間戳.xlsx”保存。

代碼如下:?

import pandas as pdimport randomfrom openpyxl import Workbookfrom datetime import datetimeimport numpy as np?def load_data(filename):return pd.read_excel(filename)?def save_data(df, filename):df.to_excel(filename, index=False)?def assign_seats(df, total_halls):# 按班級(jí)分組并隨機(jī)打亂每個(gè)班級(jí)內(nèi)部的順序grouped = df.groupby('班級(jí)')groups = [group.sample(frac=1).reset_index(drop=True) for _, group in grouped]# 創(chuàng)建調(diào)度器隊(duì)列,初始化為每個(gè)班級(jí)的iteratoriterators = [iter(group.iterrows()) for group in groups]?arranged_data = []hall_number = 1seat_number = 1total_students = len(df)students_per_hall = total_students // total_hallsextra_students = total_students % total_hallswhile iterators:random.shuffle(iterators)for it in iterators[:]:try:_, student = next(it)student_data = student.to_dict()student_data["考場(chǎng)"] = hall_numberstudent_data["考號(hào)"] = f"{seat_number:02d}" ?# 格式化為兩位字符arranged_data.append(student_data)seat_number += 1if seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1if hall_number > total_halls:hall_number = 1except StopIteration:iterators.remove(it)return arranged_data?def main():input_filename = "考場(chǎng)安排demo.xlsx"total_halls = 24?df = load_data(input_filename)arranged_students = assign_seats(df, total_halls)arranged_df = pd.DataFrame(arranged_students)current_time = datetime.now().strftime("%Y%m%d_%H%M%S")output_filename = f"考場(chǎng)安排結(jié)果_{current_time}.xlsx"save_data(arranged_df, output_filename)print(f"已成功生成文件:{output_filename}")?if __name__ == "__main__":main()

讓gpt-4o進(jìn)行了美化:

為了對(duì)導(dǎo)出的電子表格進(jìn)行格式化美化,我們可以使用 pandasopenpyxl 模塊來提升電子表格的可讀性和視覺效果。這可能包括:

  1. 設(shè)置標(biāo)題行的樣式(如背景顏色、字體加粗等)。

  2. 自動(dòng)調(diào)整列寬。

  3. 為整個(gè)表格設(shè)置邊框。

  4. 設(shè)置單元格對(duì)齊方式。

以下是如何實(shí)現(xiàn)這些功能的代碼示例:?

import pandas as pdimport openpyxlfrom openpyxl.styles import Font, Alignment, PatternFill, Border, Sidefrom openpyxl.utils import get_column_letterfrom openpyxl.worksheet.worksheet import Worksheetimport randomfrom datetime import datetime?def load_data(filename):return pd.read_excel(filename)?def save_data(df, filename):df.to_excel(filename, index=False)format_excel(filename)?def assign_seats(df, total_halls):grouped = df.groupby('班級(jí)')groups = [group.sample(frac=1).reset_index(drop=True) for _, group in grouped]iterators = [iter(group.iterrows()) for group in groups]?arranged_data = []hall_number = 1seat_number = 1total_students = len(df)students_per_hall = total_students // total_hallsextra_students = total_students % total_hallswhile iterators:random.shuffle(iterators)for it in iterators[:]:try:_, student = next(it)student_data = student.to_dict()student_data["考場(chǎng)"] = hall_numberstudent_data["考號(hào)"] = f"{seat_number:02d}"arranged_data.append(student_data)seat_number += 1if seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1if hall_number > total_halls:hall_number = 1except StopIteration:iterators.remove(it)return arranged_data?def format_excel(filename):wb = openpyxl.load_workbook(filename)ws = wb.active# 設(shè)置標(biāo)題行的樣式for cell in ws[1]:cell.font = Font(bold=True, color="FFFFFF")cell.fill = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid")cell.alignment = Alignment(horizontal="center", vertical="center")# 自動(dòng)調(diào)整列寬for col in ws.columns:max_length = 0column = col[0].column_letter ?# 獲取列的字母for cell in col:try:if len(str(cell.value)) > max_length:max_length = len(str(cell.value))except:passadjusted_width = (max_length + 2)ws.column_dimensions[column].width = adjusted_width# 設(shè)置單元格邊框和對(duì)齊方式thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))for row in ws.iter_rows(min_row=2, max_row=ws.max_row, min_col=1, max_col=ws.max_column):for cell in row:cell.border = thin_bordercell.alignment = Alignment(horizontal="center", vertical="center")wb.save(filename)?def main():input_filename = "考場(chǎng)安排demo.xlsx"total_halls = 24?df = load_data(input_filename)arranged_students = assign_seats(df, total_halls)arranged_df = pd.DataFrame(arranged_students)current_time = datetime.now().strftime("%Y%m%d_%H%M%S")output_filename = f"考場(chǎng)安排結(jié)果_{current_time}.xlsx"save_data(arranged_df, output_filename)print(f"已成功生成文件:{output_filename}")?if __name__ == "__main__":main()

美化步驟:

  1. 設(shè)置標(biāo)題行樣式

    • 使用 Font 來設(shè)定字體加粗和顏色。

    • 使用 PatternFill 來設(shè)定標(biāo)題行的背景顏色。

    • 使用 Alignment 來設(shè)置標(biāo)題單元格內(nèi)容居中。

  2. 自動(dòng)調(diào)整列寬

    • 遍歷每一列,計(jì)算列中最長的單元格內(nèi)容長度,并據(jù)此設(shè)置列寬,使得內(nèi)容完整顯示。

  3. 設(shè)置單元格邊框和對(duì)齊方式

    • 使用 BorderSide 來為每個(gè)單元格加上細(xì)邊框。

    • 對(duì)每個(gè)單元格設(shè)置居中對(duì)齊 Alignment

????????這樣設(shè)置后,生成的Excel文件在視覺上會(huì)更加整潔和美觀,并且更符合傳統(tǒng)表格的排版格式。可以在正式運(yùn)行前用少量數(shù)據(jù)進(jìn)行測(cè)試。

完整示例代碼如下:

  1. 引入 openpyxl:添加 import openpyxl

  2. 設(shè)置適當(dāng)?shù)捻撨吘?、行高和打印設(shè)置。

  3. 在代碼最后保存并提示用戶文件已生成。

?import pandas as pdimport randomimport openpyxlfrom openpyxl.styles import Font, Alignment, PatternFill, Border, Sidefrom openpyxl.utils import get_column_letterfrom openpyxl.worksheet.page import PageMarginsfrom datetime import datetime?def load_data(filename):return pd.read_excel(filename)?def save_data(df, filename):df.to_excel(filename, index=False)format_excel(filename)?def assign_seats(df, total_halls):grouped = df.groupby('班級(jí)')groups = [group.sample(frac=1).reset_index(drop=True) for _, group in grouped]iterators = [iter(group.iterrows()) for group in groups]?arranged_data = []hall_number = 1seat_number = 1total_students = len(df)students_per_hall = total_students // total_hallsextra_students = total_students % total_hallswhile iterators:random.shuffle(iterators)for it in iterators[:]:try:_, student = next(it)student_data = student.to_dict()student_data["考場(chǎng)"] = hall_numberstudent_data["考號(hào)"] = f"{seat_number:02d}"arranged_data.append(student_data)seat_number += 1if seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1if hall_number > total_halls:hall_number = 1except StopIteration:iterators.remove(it)return arranged_data?def format_excel(filename):wb = openpyxl.load_workbook(filename)ws = wb.active# 設(shè)置標(biāo)題行的樣式for cell in ws[1]:cell.font = Font(bold=True, color="FFFFFF")cell.fill = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid")cell.alignment = Alignment(horizontal="center", vertical="center")# 自動(dòng)調(diào)整列寬for col in ws.columns:max_length = 0column = col[0].column_letterfor cell in col:try:if len(str(cell.value)) > max_length:max_length = len(str(cell.value))except:passadjusted_width = (max_length + 2)ws.column_dimensions[column].width = adjusted_width# 設(shè)置行高(適當(dāng)調(diào)整以適應(yīng)A4紙)for row in range(1, ws.max_row + 1):ws.row_dimensions[row].height = 18 ?# 行高設(shè)置為18像素# 設(shè)置單元格邊框和對(duì)齊方式thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))for row in ws.iter_rows(min_row=2, max_row=ws.max_row, min_col=1, max_col=ws.max_column):for cell in row:cell.border = thin_bordercell.alignment = Alignment(horizontal="center", vertical="center")# 設(shè)置頁邊距ws.page_margins = PageMargins(left=0.5, right=0.5, top=0.5, bottom=0.5)# 設(shè)置打印區(qū)域(每張A4紙顯示一個(gè)考場(chǎng))total_halls = 24total_students = ws.max_row - 1 ?# 排除標(biāo)題行students_per_hall = total_students // total_hallsextra_students = total_students % total_halls?for hall_number in range(1, total_halls + 1):min_row = 2 + (hall_number - 1) * (students_per_hall + (1 if hall_number <= extra_students else 0))max_row = min_row + students_per_hall + (1 if hall_number <= extra_students else 0) - 1?ws.print_area = f"A1:E{max_row}"?# 配置頁面設(shè)置ws.page_setup.orientation = 'portrait'ws.page_setup.paperSize = ws.PAPERSIZE_A4ws.page_setup.fitToWidth = Truews.page_setup.fitToHeight = False?wb.save(filename)?def main():input_filename = "考場(chǎng)安排demo.xlsx"total_halls = 24?df = load_data(input_filename)arranged_students = assign_seats(df, total_halls)arranged_df = pd.DataFrame(arranged_students)current_time = datetime.now().strftime("%Y%m%d_%H%M%S")output_filename = f"考場(chǎng)安排結(jié)果_{current_time}.xlsx"save_data(arranged_df, output_filename)print(f"已成功生成文件:{output_filename}")?if __name__ == "__main__":main()

關(guān)鍵美化與打印設(shè)置說明:

  1. 自動(dòng)調(diào)整列寬:根據(jù)單元格內(nèi)容自動(dòng)調(diào)整列寬,以適應(yīng)打印輸出。

  2. 設(shè)置標(biāo)題行的樣式:加粗并設(shè)置標(biāo)題行字體顏色和背景顏色,使其與數(shù)據(jù)行區(qū)別開來。

  3. 設(shè)置行高:設(shè)置統(tǒng)一的行高(18像素)以適應(yīng)A4紙打印要求。

  4. 設(shè)置單元格邊框和對(duì)齊方式:所有單元格增加邊框和居中對(duì)齊。

  5. 設(shè)置頁邊距:為頁面設(shè)置合適的頁邊距(0.5英寸)。

  6. 設(shè)置打印區(qū)域:每個(gè)考場(chǎng)的安排顯示在一張A4紙上。

????????現(xiàn)在,運(yùn)行程序?qū)⑸梢迅袷交痛蛴?yōu)化的Excel文件,包含每個(gè)考場(chǎng)的安排,并輸出為設(shè)置在A4紙上的頁邊距和打印區(qū)域。

運(yùn)行后的結(jié)果:

a2504e4da93e4d679a23604cde58c378.png

????????這里展示了兩個(gè)考場(chǎng),相鄰的兩個(gè)考生看上去來至于不同的班級(jí)。由于各班級(jí)人數(shù)不等,有的班級(jí)人數(shù)過多,最后一個(gè)考場(chǎng)有幾個(gè)相同班的學(xué)生連在一起。

ad74ce27924c4aeab551c7b929c8d5ad.png

如何解決這個(gè)問題??

請(qǐng)通過一個(gè)函數(shù)檢查最后輸出的結(jié)果,如果有相鄰的考生來至于同一個(gè)班級(jí),請(qǐng)參照前面的安排,適當(dāng)?shù)恼{(diào)整,全部安排,保證相鄰的考生來至于不同的班級(jí)?要確保沒有相鄰的考生來自同一個(gè)班級(jí),我們需要一個(gè)后處理函數(shù)來檢查最終的座位安排,并在發(fā)現(xiàn)問題時(shí)進(jìn)行調(diào)整。以下是一個(gè)改進(jìn)方案,它在安排考位之后,通過檢查并調(diào)整相鄰考生的班級(jí)來防止同一班級(jí)的考生相鄰:?“將相鄰的學(xué)生和隨后找到的另一個(gè)班級(jí)的學(xué)生交換位置”, 這個(gè)算法不完全正確。隨后仍然可能是一個(gè)班級(jí),應(yīng)該是從前面已排的學(xué)生中尋找滿足以下條件的記錄進(jìn)行調(diào)換:這個(gè)學(xué)生前后都與調(diào)整的學(xué)生班級(jí)不一樣?現(xiàn)在給出的結(jié)果,沒有連續(xù)幾個(gè)來至同一個(gè)班級(jí)的考生了,但還是有相鄰兩個(gè)來至于同一個(gè)班,請(qǐng)調(diào)整后,重新調(diào)用檢查函數(shù),直到不再有相鄰學(xué)生來至于一個(gè)班級(jí)?為了確保相鄰的學(xué)生不來自同一個(gè)班級(jí),我們可以用一個(gè)循環(huán)不斷地檢查并調(diào)整座位安排,直到?jīng)]有相鄰考生來自同一個(gè)班級(jí)為止。我們可以在`check_and_adjust_seating`函數(shù)中用一個(gè)布爾值標(biāo)記調(diào)整是否完成,如果發(fā)現(xiàn)有相鄰的學(xué)生來自同一個(gè)班級(jí),則進(jìn)行調(diào)整并再次檢查。?### 改進(jìn)內(nèi)容:1. 修改了`check_and_adjust_seating`函數(shù),確保在調(diào)整座位后再一次檢查是否有相鄰的考生來自同一個(gè)班級(jí)。如果有相鄰的考生來自同一個(gè)班級(jí),則繼續(xù)調(diào)整,直到?jīng)]有相鄰的考生來自同一個(gè)班級(jí)。2. 用一個(gè)布爾值`adjusted`跟蹤是否進(jìn)行了調(diào)整,如果進(jìn)行了調(diào)整則繼續(xù)檢查,否則結(jié)束循環(huán)。?這樣可以確保最終輸出的結(jié)果中沒有相鄰兩個(gè)考生來自同一個(gè)班級(jí)。?調(diào)整后,應(yīng)該反復(fù)從開始驗(yàn)證,最終確保最終輸出的結(jié)果中沒有相鄰兩個(gè)考生來自同一個(gè)班級(jí),只給出調(diào)整函數(shù)

最后結(jié)果

????????看上去已經(jīng)沒有相鄰兩個(gè)考生來自同一個(gè)班級(jí),實(shí)際上gpt只是調(diào)整記錄位置,考場(chǎng)號(hào)和座位號(hào)還是原來的值,讓gpt從新分配考場(chǎng)號(hào)和座位號(hào)

?import pandas as pdimport randomimport openpyxlfrom openpyxl.styles import Font, Alignment, PatternFill, Border, Sidefrom openpyxl.worksheet.page import PageMarginsfrom datetime import datetime??def load_data(filename):return pd.read_excel(filename)??def save_data(df, filename):df.to_excel(filename, index=False)format_excel(filename, df)??def assign_seats(df, total_halls):grouped = df.groupby('班級(jí)')groups = [group.sample(frac=1).reset_index(drop=True) for _, group in grouped]?# Sort groups by size (descending)groups.sort(key=lambda x: len(x), reverse=True)?iterators = [iter(group.iterrows()) for group in groups]arranged_data = []hall_number = 1seat_number = 1?total_students = len(df)students_per_hall = total_students // total_hallsextra_students = total_students % total_halls?while iterators:# Shuffle iterators to ensure randomnessrandom.shuffle(iterators)for it in iterators[:]:try:_, student = next(it)student_data = student.to_dict()student_data["考場(chǎng)"] = hall_numberstudent_data["考號(hào)"] = f"{seat_number:02d}"arranged_data.append(student_data)seat_number += 1?# Check if seat number exceeds the allowed number of students per hallif seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1# Reset hall number if it exceeds total hallsif hall_number > total_halls:hall_number = 1except StopIteration:iterators.remove(it)?return arranged_data??def check_and_adjust_seating(arranged_data):def has_adjacent_same_class(data):# Check if there are any adjacent students from the same classfor i in range(len(data) - 1):if data[i]['班級(jí)'] == data[i + 1]['班級(jí)']:return ireturn -1?def find_valid_swap(index, data):# Find a valid swap by checking front part of the list before the indexcurrent_class = data[index]['班級(jí)']for j in range(len(data)):if j != index and data[j]['班級(jí)'] != current_class:# Ensure new surrounding are validif (j == 0 or data[j - 1]['班級(jí)'] != current_class) and (j == len(data) - 1 or data[j + 1]['班級(jí)'] != current_class):return jreturn -1?swap_operations = []while True:index = has_adjacent_same_class(arranged_data)if index == -1:break  # No adjacent students from the same classswap_index = find_valid_swap(index + 1, arranged_data)if swap_index == -1:raise ValueError("Cannot find a valid swap to adjust the seating arrangement.")# Record the swap operationswap_operations.append((index + 1, swap_index))# Swap the adjacent student with the valid studentarranged_data[index + 1], arranged_data[swap_index] = arranged_data[swap_index], arranged_data[index + 1]?# Additional check and swap if any, continue from the startwhile has_adjacent_same_class(arranged_data) != -1:index = has_adjacent_same_class(arranged_data)if index != -1:swap_index = find_valid_swap(index, arranged_data)if swap_index != -1:# Record the swap operationswap_operations.append((index, swap_index))arranged_data[index], arranged_data[swap_index] = arranged_data[swap_index], arranged_data[index]?return arranged_data, swap_operations??def reassign_seats(arranged_data, total_halls):hall_number = 1seat_number = 1total_students = len(arranged_data)students_per_hall = total_students // total_hallsextra_students = total_students % total_halls?for i, student in enumerate(arranged_data):student['考場(chǎng)'] = hall_numberstudent['考號(hào)'] = f"{seat_number:02d}"seat_number += 1?if seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1if hall_number > total_halls:hall_number = 1?return arranged_data??def format_excel(filename, df):wb = openpyxl.load_workbook(filename)ws = wb.active?# 設(shè)置標(biāo)題行的樣式for cell in ws[1]:cell.font = Font(bold=True, color="FFFFFF")cell.fill = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid")cell.alignment = Alignment(horizontal="center", vertical="center")?# 自動(dòng)調(diào)整列寬for col in ws.columns:max_length = 0column = col[0].column_letterfor cell in col:try:if len(str(cell.value)) > max_length:max_length = len(str(cell.value))except:passadjusted_width = (max_length + 20)ws.column_dimensions[column].width = adjusted_width?# 設(shè)置行高(適當(dāng)調(diào)整以適應(yīng)A4紙)for row in range(1, ws.max_row + 1):ws.row_dimensions[row].height = 23  # 行高設(shè)置為23像素?# 設(shè)置單元格邊框和對(duì)齊方式thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'),bottom=Side(style='thin'))for row in ws.iter_rows(min_row=2, max_row=ws.max_row, min_col=1, max_col=ws.max_column):for cell in row:cell.border = thin_bordercell.alignment = Alignment(horizontal="center", vertical="center")?# 設(shè)置頁邊距ws.page_margins = PageMargins(left=0.5, right=0.5, top=0.5, bottom=0.5)?hall_groups = df.groupby('考場(chǎng)')?# 設(shè)置重復(fù)打印標(biāo)題行ws.print_title_rows = '1:1'ws.print_title_cols = None?# 逐個(gè)考場(chǎng)設(shè)置打印區(qū)域for hall_number, hall_df in hall_groups:min_row = hall_df.index[0] + 2  # 加2以跳過標(biāo)題行和數(shù)據(jù)框索引偏移max_row = hall_df.index[-1] + 2  # 加2以跳過標(biāo)題行和數(shù)據(jù)框索引偏移?# 初始化 print area, configuration of page settings for each hallws.print_area = f"A1:E{max_row}"?# 配置頁面設(shè)置ws.page_setup.orientation = 'portrait'ws.page_setup.paperSize = ws.PAPERSIZE_A4ws.page_setup.fitToPage = Truews.page_setup.fitToWidth = 1ws.page_setup.fitToHeight = False  # 允許縱向頁面數(shù)自動(dòng)擴(kuò)展?wb.save(filename)??def main():input_filename = "11-15.xlsx"  # 修改為學(xué)生信息的電子表格名total_halls = 9  # 修改為考場(chǎng)數(shù)df = load_data(input_filename)arranged_students = assign_seats(df, total_halls)adjusted_students, swap_operations = check_and_adjust_seating(arranged_students)final_students = reassign_seats(adjusted_students, total_halls)arranged_df = pd.DataFrame(final_students)current_time = datetime.now().strftime("%Y%m%d_%H%M%S")output_filename = f"考場(chǎng)安排結(jié)果_{current_time}.xlsx"save_data(arranged_df, output_filename)print(f"已成功生成文件:{output_filename}")??if __name__ == "__main__":main()

??最后在Microsoft Excel 中檢測(cè)相鄰單元格值是否相等

  1. 選擇數(shù)據(jù)區(qū)域

    • 選擇你想要檢查的單元格區(qū)域。例如,假設(shè)你要檢查從A2到A100的單元格。

  2. 打開條件格式

    • 在Excel的“開始”選項(xiàng)卡上,點(diǎn)擊“條件格式”。

  3. 創(chuàng)建新的規(guī)則

    • 在“條件格式”下拉菜單中,選擇“新建規(guī)則”。

  4. 使用公式來檢測(cè)

    • 在“選擇規(guī)則類型”窗口,選擇“使用公式確定要設(shè)置格式的單元格”。

    • 在“為符合此公式的值設(shè)置格式”框中輸入適當(dāng)?shù)墓?。例?#xff0c;如果你檢查A列中的相鄰單元格,可以使用公式:

      ?=A2=A1
    • 然后你可以設(shè)置條件匹配時(shí)應(yīng)用的格式,如填充顏色或字體顏色等。

  5. 應(yīng)用條件格式

    • 設(shè)置好格式后,點(diǎn)擊“確定”。這個(gè)操作將會(huì)在指定區(qū)域內(nèi)自動(dòng)應(yīng)用條件格式。如果兩個(gè)相鄰單元格的值相同,它們將會(huì)被醒目地突出顯示。

18ff496f866340fba7aad911d547df6f.png

程序已完全符合要求。

食用方法

確保你安裝了所需庫:

?pip install pandas openpyxl numpy

1、表結(jié)構(gòu)

136b48d33f46485da1f237f794cd2e28.png

2、修改input_filename的值 ,此變量存儲(chǔ)的是學(xué)生信息的電子表格名,擴(kuò)展名為.xlsx

3、修改total_halls的值,此變量存儲(chǔ)的是考場(chǎng)個(gè)數(shù)

4、如果要分類安排考場(chǎng),可將各層次學(xué)生分別建立對(duì)應(yīng)的電子表格文件。

運(yùn)行程序后,將生成一個(gè)已經(jīng)格式化美化好的Excel文件。

如果有好的建議歡迎交流!!!,食用過程中錯(cuò)誤請(qǐng)?jiān)u論區(qū)給出!!!

?

?

http://m.risenshineclean.com/news/66042.html

相關(guān)文章:

  • 英文 日文網(wǎng)站建設(shè)申請(qǐng)seo賺錢嗎
  • 那個(gè)相親網(wǎng)站做的比較好網(wǎng)站流量分析工具
  • 開發(fā)一個(gè)官方網(wǎng)站要多少錢免費(fèi)的關(guān)鍵詞優(yōu)化軟件
  • 自己做代練網(wǎng)站百度關(guān)鍵詞廣告怎么收費(fèi)
  • 網(wǎng)站發(fā)展方向百度指數(shù)大數(shù)據(jù)分享平臺(tái)
  • 網(wǎng)站swf怎么做seo搜索引擎優(yōu)化原理
  • vs做網(wǎng)站連數(shù)據(jù)庫優(yōu)化推廣網(wǎng)站怎么做最好
  • 網(wǎng)站規(guī)劃與設(shè)計(jì)范文太原網(wǎng)站排名推廣
  • 國內(nèi)做外貿(mào)網(wǎng)站的有哪些資料遼寧網(wǎng)站建設(shè)
  • 網(wǎng)絡(luò)營銷工作網(wǎng)站seo優(yōu)化價(jià)格
  • 直接做的黃頁視頻網(wǎng)站濟(jì)南seo優(yōu)化公司
  • 網(wǎng)站開發(fā)用什么系統(tǒng)比較好seo是做什么工作內(nèi)容
  • 做app布局參考哪個(gè)網(wǎng)站紹興seo排名外包
  • 免費(fèi)行情軟件app網(wǎng)站mnu萬網(wǎng)域名查詢工具
  • 做鞋子批發(fā)的網(wǎng)站有哪些強(qiáng)力搜索引擎
  • 第三方免費(fèi)做網(wǎng)站seo云優(yōu)化公司
  • 網(wǎng)站獲取訪客qq號(hào)碼怎么接app推廣的單子
  • app手機(jī)網(wǎng)站模板免費(fèi)下載網(wǎng)站seo外包公司有哪些
  • 關(guān)于做網(wǎng)站書籍關(guān)鍵詞組合工具
  • 大學(xué)生個(gè)人網(wǎng)站怎么做seo技術(shù)學(xué)院
  • 網(wǎng)站如何在工信部備案信息網(wǎng)站設(shè)計(jì)公司模板
  • 南通網(wǎng)站建設(shè)seo班級(jí)優(yōu)化大師
  • 南和網(wǎng)站建設(shè)公司最近國際時(shí)事熱點(diǎn)事件
  • 鄭州seo優(yōu)化網(wǎng)站seo優(yōu)化心得
  • 快速搭建網(wǎng)站的方法百度投訴中心
  • icp網(wǎng)站備案密碼找回百度統(tǒng)計(jì)數(shù)據(jù)
  • 做圖賺錢的網(wǎng)站創(chuàng)量廣告投放平臺(tái)
  • 哪個(gè)網(wǎng)站做布料好智能建站網(wǎng)站模板
  • 建設(shè)寧波市分行的互聯(lián)網(wǎng)網(wǎng)站國際新聞今天最新消息
  • 群暉nas可以做網(wǎng)站嗎如何建立網(wǎng)站平臺(tái)