20240925 / app.py
ywyang's picture
Update app.py
2014802 verified
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()