12 random案例 年會抽獎案例

jhchena發表於2024-09-28

年會抽獎案例

把向向過程程式設計函式實現時:可讀性+重用性,print時,能不使用“”號時,儘量不使用

- 各部門統計員工的姓名 => 部門名稱.txt
- 讀取使用者資訊
- 根據特定的獎項配置來進行抽獎
data_list = [
    ("三等獎",5,"空氣清淨機"),
    ("二等獎",3,"ipad"),
	("一等獎",2,"iphone 13"),
	("特等獎",1,"寶馬 X5"),
]
- 一個一個獎項去抽取,每次抽取後領導講話後,在繼續抽取

"""
- 各部門統計員工的姓名 => 部門名稱.txt
- 讀取使用者資訊
- 根據特定的獎項配置來進行抽獎
data_list = [
    ("三等獎",5,"空氣清淨機"),
    ("二等獎",3,"ipad"),
	("一等獎",2,"iphone 13"),
	("特等獎",1,"寶馬 X5")
]
- 一個一個獎項去抽取,每次抽取後領導講話後,在繼續抽取
"""
import os
import random
from datetime import datetime

# def get_user_info(files,choices):
message = f"{30 * '*'} 聯通年會抽獎系統{30 * '*'}"
print(message)

# 1、讀取所有使用者資訊
user_list = []
for file_name in os.listdir("files"):
    dep_name = file_name.split(".")[0]  # 獲取部門名字
    file_path = os.path.join("files", file_name)
    f = open(file_path, mode='r', encoding='utf-8')
    for line in f:
        line = line.split()
        if line:
            user_list.append(f'{dep_name}-{line}')
    f.close()
    
#方式1
info = f"""
員工數量:{len(user_list)}
時間:{datetime.now().strtime("%Y-%m-%d")}
"""

#方式2 

print(f"員工數量:{len(user_list)}\n時間:{datetime.now().strtime("%Y-%m-%d")}\n")

# 2. 輸入特定Y/y字元繼續
while True:
    text = input("輸入y/Y繼續").strip()
    if text.upper() == 'Y':
        break

# 3 獎項資訊
print(f"{30 * '-'} 獎品資訊{30 * '-'}")
data_list = [
    ("三等獎", 5, "空氣清淨機"),
    ("二等獎", 3, "ipad"),
    ("一等獎", 2, "iphone 13"),
    ("特等獎", 1, "寶馬 X5"),
]

for text, count, title in data_list:
    print(f"{text}. 有{count}個,獎品是:{title}")

# 4、輸入特定Y/y字元繼續
while True:
    text = input("輸入y/Y繼續").strip()
    if text.upper() == 'Y':
        break
# 5、開始抽獎
print(f"{30 * '-'} 開始抽獎{30 * '-'}")
for text, count, title in data_list:
    luck_list = random.sample(user_list, count)
    # 避免抽獎姓名重複,將已抽獎的人員,進行移除
    for name in luck_list:
        user_list.remove(name)
    print(f"{text},中獎人員{luck_list},獎品:{title}")
    # 存在問題:1、獎項全部出來了,2、有重複抽獎
    # 解決問題:1,透過輸入回車繼續
    input('回車繼續')

輸入特定的字元才能繼續往下面執行

# 2.輸入回車繼續

input ('回車繼續')

print(‘123’)

# 輸入特定的字元繼續
while True:
text = input("輸入q繼續")
if text == 'q':
break

相關文章