Python简单的随机点名功能

作为一个新手,写的关于Python的一个小功能

import random
n1 = open('name','r',encoding='utf-8')
n2 = open('name_did','r+',encoding='utf-8')
n3 = open('name_leave','r',encoding='utf-8')
name = n1.read().splitlines()
name_did = n2.read().splitlines()
name_leave = n3.read().splitlines()
while name:
    n = random.choice(name)
    if len(name) == len(name_did) + len(name_leave):
        print("所有的同学都回答了")
        n2.seek(0)
        n2.truncate(0)
    if n in name and (n not in name_did )and( n not in name_leave):
        print(n)
        n2.write(n+'\n')
        break

这是总体代码

n1,n2,n3分别是对三个不同的文件进行读取,r表示read只读,r+表示可读可写。

Python简单的随机点名功能_第1张图片

我这里n1文件是名单,n2是已被点名的人,被点名的人是需要修改的所以是r+,n3表示请假的人。

n1 = open('name','r',encoding='utf-8')
n2 = open('name_did','r+',encoding='utf-8')
n3 = open('name_leave','r',encoding='utf-8')
name = n1.read().splitlines()
name_did = n2.read().splitlines()
name_leave = n3.read().splitlines()

到这里其实就是一个前期准备工作,准备好了三个文件,分别代表的含义。

主体代码部分是一个while循环,采用了random模块来完成随机的效果。

while name:
    n = random.choice(name)
    if len(name) == len(name_did) + len(name_leave):
        print("所有的同学都回答了")

这是当名单文件name的长度与点过的人name_did文件加上name_leave请假的人长度一致时,说明在场的所有人已被点过。输出“所有同学都回答了”,n代表随机从名单中抽取。

 n2.seek(0)
 n2.truncate(0)

seek是将n2的指针从头开始,n2是以及回答问题的人, n2.truncate(0)覆盖文件中的数据,这里表示将文件归零。

  if n in name and (n not in name_did )and( n not in name_leave):
        print(n)
        n2.write(n+'\n')
        break

最后一段是简单的if语句判断,只要不在name_did和name_leave,点过和请假的名单中,那么就随机输出,同时在name_did中加上这个人的名字。

你可能感兴趣的:(python)