#随机抽奖 import random x=open("chojiang.txt","r",encoding="UTF-8") #x是文件对象 y=x.read() shulist=y.split('\n')#把字符串y里面的字符串分割为多个放在列表 shulist = list(set(shulist)) # 去重 print("开始抽奖") while True: if not shulist: shulist.remove(random.choice(shulist)) break print("本次抽奖结果为:", random.choice(shulist)) shulist.remove(random.choice(shulist)) # 抽到过的不会再被点到 print(shulist) a = input("是否继续抽奖[1续/0结束]: ") while a not in ['0', '1']: a = input("请输入正确选项[0或1]: ") if a == '0': break
时间: 2024-03-19 14:45:25 浏览: 19
这段代码主要是实现了一个简单的抽奖功能,但是可以进行一些优化和完善。以下是一些可能的改进:
1. 在抽奖前对输入的文件路径进行检查,以避免出现文件不存在等异常情况。
2. 在打开文件时,可以使用 with 语句来确保文件对象被正确关闭,避免文件泄漏等问题。
3. 可以将文件读取和去重的操作封装成函数,以提高代码的可读性和复用性。
4. 可以添加一些异常处理机制,以避免出现不可预知的错误。
5. 可以增加一些用户交互界面,如输入抽奖人数、奖项等,以使程序更加灵活。
6. 可以将抽奖结果写入文件,以便后续查看。
下面是一个可能的改进版本的代码:
```python
import os
import random
def read_file(path):
"""
读取文件内容并去重
:param path: 文件路径
:return: 包含不重复字符串的列表
"""
if not os.path.exists(path):
raise FileNotFoundError("文件不存在")
with open(path, "r", encoding="utf-8") as f:
content = f.read()
content = content.strip().split("\n")
return list(set(content))
def draw_lottery(data):
"""
抽奖函数
:param data: 包含抽奖对象的列表
"""
print("开始抽奖")
while True:
if not data:
break
result = random.choice(data)
data.remove(result)
print("本次抽奖结果为:", result)
a = input("是否继续抽奖[1续/0结束]: ")
while a not in ['0', '1']:
a = input("请输入正确选项[0或1]: ")
if a == '0':
break
print("抽奖结束")
if __name__ == "__main__":
path = input("请输入文件路径:")
try:
data = read_file(path)
except FileNotFoundError:
print("文件不存在,请重新输入")
else:
draw_lottery(data)
```