import gradio as gr import random # 初始化全域變數 drawn_numbers = [] draw_count = {} # 抽籤邏輯 def draw_number(max_number, allow_duplicates): global drawn_numbers, draw_count if allow_duplicates or len(drawn_numbers) < max_number: while True: number = random.randint(1, max_number) if allow_duplicates or number not in drawn_numbers: break # 記錄抽中的號碼和次數 if number in draw_count: draw_count[number] += 1 else: draw_count[number] = 1 if not allow_duplicates: drawn_numbers.append(number) return f"抽到的號碼是: {number}\n目前號碼被抽中的次數: {draw_count}" else: return "所有號碼都已經被抽完!" # 重置系統 def reset(): global drawn_numbers, draw_count drawn_numbers = [] draw_count = {} return "系統已重置!" # 介面設計 with gr.Blocks() as demo: max_number_input = gr.Number(label="輸入班級座號的最大值", value=30, precision=0) allow_duplicates_checkbox = gr.Checkbox(label="允許重複抽籤", value=True) output = gr.Textbox(label="結果") draw_button = gr.Button("抽籤") reset_button = gr.Button("重置系統") draw_button.click(draw_number, inputs=[max_number_input, allow_duplicates_checkbox], outputs=output) reset_button.click(reset, outputs=output) # 運行應用程式 demo.launch()