Python是一种流行的编程语言,它具有易学易用、功能强大和灵活多样的特点,可以应用于各种不同的场景和领域。其中之一就是编写一个点名程序,可以用来随机选取一个名字或者其他元素,广泛应用于教育、培训、抽奖等场合。

python fake 学校和专业_c++

Python提供了很多库和工具,可以帮助我们轻松地编写一个点名程序,其中最常用的就是random和tkinter库。random库可以用来生成随机数,从而实现随机选择的功能;

tkinter库则可以用来创建图形用户界面(GUI),使程序更加友好、易用和美观。

下面是一个简单的Python点名程序的示例代码:

import random  
  
students = ['张三', '李四', '王五', '刘六', '曾七', '赵八']  
  
print("本次点名的名单为:")  
for student in students:  
   print(student)  
  
print("\n下面是被点到的同学:")  
selected_student = random.choice(students)  
print(selected_student)

这个程序会随机从给定的学生名单中选出一个人,并打印出来。你可以根据需要修改学生名单来适应不同的场景。

这个简单的Python点名程序用到了以下知识点:

列表list):存储学生名单。
循环for):遍历学生名单并打印每个学生的名字。
随机数random):使用random.choice函数从学生名单中随机选择一个名字。
输出print):将结果打印到控制台上。

带界面的版本

可以使用Python的图形用户界面(GUI)库之一来创建一个带界面的点名程序。下面是使用tkinter库编写的简单示例程序:

import tkinter as tk  
import random  
  
# 创建一个Tkinter窗口  
window = tk.Tk()  
window.title("点名程序")  
  
# 创建一个Label,用于显示选中的学生  
selected_student = tk.StringVar()  
label = tk.Label(window, textvariable=selected_student, font=("Helvetica", 24))  
label.pack(padx=50, pady=50)  
  
# 创建一个Button,用于触发点名事件  
students = ['张三', '李四', '王五', '刘六', '曾七', '赵八']  
def pick_student():  
    selected_student.set(random.choice(students))  
button = tk.Button(window, text="点名", command=pick_student)  
button.pack(padx=10, pady=10)  
  
# 启动Tkinter事件循环  
window.mainloop()

这个程序会创建一个窗口,其中包含一个Label和一个Button。每次点击Button时,程序会从给定的学生名单中随机选择一个人,并将其名字显示在Label中。

python fake 学校和专业_python fake 学校和专业_02

导入学生名单

可以使用tkinter.filedialog模块来实现一个打开文件对话框,以便用户可以选择要导入的名单文件。下面是一个添加了导入按钮的示例程序:

import tkinter as tk  
from tkinter import filedialog  
import random  
  
# 创建一个Tkinter窗口  
window = tk.Tk()  
window.title("点名程序")  
  
# 创建一个Label,用于显示选中的学生  
selected_student = tk.StringVar()  
label = tk.Label(window, textvariable=selected_student, font=("Helvetica", 24))  
label.pack(padx=50, pady=50)  
  
# 创建一个Button,用于触发点名事件  
students = []  
def pick_student():  
    if students:  
        selected_student.set(random.choice(students))  
    else:  
        selected_student.set("请先导入名单")  
button = tk.Button(window, text="点名", command=pick_student)  
button.pack(padx=10, pady=10)  
  
# 创建一个Button,用于触发导入名单事件  
def import_students():  
    global students  
    filename = filedialog.askopenfilename(title="选择名单文件", filetypes=[("文本文件", "*.txt"), ("所有文件", "*.*")])  
    if filename:  
        with open(filename, "r") as f:  
            students = f.read().splitlines()  
    else:  
        students = []  
import_button = tk.Button(window, text="导入名单", command=import_students)  
import_button.pack(side="top", padx=10, pady=10)  
  
# 启动Tkinter事件循环  
window.mainloop()

个程序在原有的程序基础上添加了一个“导入名单”按钮。点击该按钮后,程序会打开一个文件对话框,允许用户选择一个名单文件进行导入。

名单文件应该是一个普通文本文件,每行一个名字。

程序会将名单文件中的名字读取到一个列表中,并在点名时从这个列表中随机选择一个名字。如果未导入名单文件,则点名按钮将无法正常工作,因此程序在未导入名单时会在Label中显示一条提示信息。

python fake 学校和专业_python_03

动画版本

使用tkinter库的after()方法和config()方法,结合Thread类和queue模块来实现一个带动画的点名程序。下面是一个示例程序:

import tkinter as tk  
from tkinter import filedialog  
import random  
import queue  
from threading import Thread  
  
# 创建一个Tkinter窗口  
window = tk.Tk()  
window.title("点名程序")  
  
# 创建一个Label,用于显示选中的学生  
selected_student = tk.StringVar()  
label = tk.Label(window, textvariable=selected_student, font=("Helvetica", 24))  
label.pack(padx=50, pady=50)  
  
# 创建一个Button,用于触发点名事件  
students = []  
def pick_student():  
    if students:  
        t = Thread(target=flash_label, args=(selected_student, students))  
        t.start()  
    else:  
        selected_student.set("请先导入名单")  
  
def flash_label(selected_student, students):  
    q = queue.Queue()  
    for i in range(50):  
        q.put(random.choice(students))  
    for i in range(50):  
        selected_student.set(q.get())  
        label.config(fg=random_color())  
        window.update()  
        window.after(10)  
    selected_student.set(random.choice(students))  
  
def random_color():  
    return f"#{random.randint(0, 0xFFFFFF):06x}"  
  
button = tk.Button(window, text="点名", command=pick_student)  
button.pack(padx=10, pady=10)  
  
# 创建一个Button,用于触发导入名单事件  
def import_students():  
    global students  
    filename = filedialog.askopenfilename(title="选择名单文件", filetypes=[("文本文件", "*.txt"), ("所有文件", "*.*")])   
    # filename = tk.filedialog.askopenfilename(title="选择名单文件", filetypes=[("文本文件", "*.txt"), ("所有文件", "*.*")])  
    if filename:  
        with open(filename, "r") as f:  
            students = f.read().splitlines()  
    else:  
        students = []  
import_button = tk.Button(window, text="导入名单", command=import_students)  
import_button.pack(side="top", padx=10, pady=10)  
  
# 启动Tkinter事件循环  
window.mainloop()

个程序会在点名按钮被按下时,随机闪烁选中的学生名字。程序使用Thread类和queue模块实现了一个简单的线程池,将闪烁过程放在一个单独的线程中运行,防止阻塞主线程。每次闪烁都会随机选择一个名字和一种颜色。程序使用after()方法来定时更新Label和窗口,从而实现闪烁的效果。

python fake 学校和专业_python_04