WHCSRL 技术网

使用python制作随机点名程序(不重复点名)

用python做一个简单的随机点名程序(不重复点名)

这是我来到csdn的第一篇文章,内容如果有瑕疵的地方或者代码可以进一步改善,请大家对我指点一二。谢谢!
废话不多说,上代码!

import random               #导入随机模块
import pyttsx3              #导入第三方语音模块
listen = pyttsx3.init()     #初始化一个变量

txt_path = input('请输入txt文件的path:')		#使用者输入名单文件的路径(名单文件为txt,一行只能有一个姓名,姓名必须在行首不能有空格)
txt = open(f'{txt_path}','r',encoding='utf-8')		#打开名单文件
name_list = []								#创建空列表用于存储名单
for i in txt:								#for循环遍历
    i = i.replace('
','')					#处理字符串将换行符去掉
    name_list.append(i)						#添加到姓名列表里

print(name_list)							#打印名单


txt.close()									#关闭名单文件

while True:									#永真无限循环
    if len(name_list) == 0:					#当名单里所有人都被点到过一次时结束
        print('结束')
        break
    r_num = random.randint(0, len(name_list) - 1)	#创建随机数
    a = input('输入b退出,其他值继续:')		#让用户选择继续点名还是退出点名
    if a == 'b':							#当用户输入b退出即退出
        print('结束')
        break
    else:									#否则就开始随机点名
        print(f'本次被点到名的是:{name_list[r_num]}')
        listen.say(f'{name_list[r_num]}')	#输出姓名语音
        listen.runAndWait()					#运行语言
        name_list.pop(r_num)				#将点过名的去除掉以防重复
        print()								#间隔作用
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

将代码分割成四部分
、导入模块
需要两个模块,一个内置模块一个第三方模块分别是:random、pyttsx3(这个是第三放模块,需要安装).

import random
import pyttsx3
  • 1
  • 2

、用户输入名单文件,并且用程序加工一下

txt_path = input('请输入txt文件的path:')		#使用者输入名单文件的路径(名单文件为txt,一行只能有一个姓名,姓名必须在行首不能有空格)
txt = open(f'{txt_path}','r',encoding='utf-8')		#打开名单文件
name_list = []								#创建空列表用于存储名单
for i in txt:								#for循环遍历
    i = i.replace('
','')					#处理字符串将换行符去掉
    name_list.append(i)						#添加到姓名列表里

print(name_list)							#打印名单

txt.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

用户要输入名单文件的路径
例如D:名单文件夹名单1.txt 就是我自己写的名单的路径
这时我们运行一下程序,将名单的路径输入看看效果
我们发现程序将名单以列表的形式打印出来了,然后提示我输入b退出随机点名,输入其他值开始随机点名
这个是名单的格式,一定要按照这样的格式去写名单!

、使用pyttsx3模块

listen = pyttsx3.init()
listen.say('输出语音')
listen.runAndWait()     #开始输出语音
  • 1
  • 2
  • 3

注意pyttsx3模块是要自己下载的,下载方式就是在cmd里输入pip install pyttsx3这个命令即可
这是下载图片

、随机开始

while True:									#永真无限循环
    if len(name_list) == 0:					#当名单里所有人都被点到过一次时结束
        print('结束')
        break
    r_num = random.randint(0, len(name_list) - 1)	#创建随机数
    a = input('输入b退出,其他值继续:')		#让用户选择继续点名还是退出点名
    if a == 'b':							#当用户输入b退出即退出
        print('结束')
        break
    else:									#否则就开始随机点名
        print(f'本次被点到名的是:{name_list[r_num]}')
        listen.say(f'{name_list[r_num]}')	#输出姓名语音
        listen.runAndWait()					#运行语言
        name_list.pop(r_num)				#将点过名的去除掉以防重复
        print()								#间隔作用
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

随机点名是根据创建随机数然后名单根据随机数索引来达到随机的效果。
。。

这就是我做的一个简单的随机点名程序。本人是一名初学者,如果代码有问题或者可以改进请大家指点出来,谢谢!

推荐阅读