import random x=open("name.text","r",encoding="UTF-8") #x是文件对象 y=x.read() namelist=y.split('\n')#把字符串y里面的字符串分割为多个放在列表 a='1' while a=='1': b = random.choice(namelist) #nanelast - remove(b) # 点过名的不会再被点到 print(b) # if not namelist: print("点名结束") break else: print(namelist) a = input("是否继续点名[1年续/0结束]") while a!='1'and a!='o': a = input("请输入正确选项[0或1]")
时间: 2024-03-19 08:43:54 浏览: 305
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
这段代码是用来随机点名的,但是存在一些问题,需要进行改进:
1. 文件名打错了:文件名应该是 "name.txt" 而不是 "name.text"。
2. 变量名不规范:变量名最好使用有意义的单词,比如 `name_list` 而不是 `namelist`。
3. 没有处理文件不存在的情况:如果文件不存在,会抛出 FileNotFoundError 异常,建议增加异常处理。
4. 没有去重:如果文件中存在重复的名字,会出现重复点名的情况,建议增加去重操作。
5. 输出格式不规范:建议在输出点名结果时,加上一些提示信息,比如 "本次点名结果为:"。
6. 输入选项不规范:在输入选项时,只判断了输入是否为 "1" 或 "0",但用户可能会输入其它字符,建议增加异常处理或正则匹配。
下面是改进后的代码:
```python
import random
try:
with open("name.txt", "r", encoding="UTF-8") as f:
name_list = f.read().split('\n')
except FileNotFoundError:
print("文件不存在!")
exit()
name_list = list(set(name_list)) # 去重
while True:
if not name_list:
print("点名结束")
break
print("本次点名结果为:", random.choice(name_list))
name_list.remove(b) # 点过名的不会再被点到
print(name_list)
a = input("是否继续点名[1续/0结束]")
while a not in ['0', '1']:
a = input("请输入正确选项[0或1]")
if a == '0':
break
```
希望可以帮助到您!
阅读全文