「Python」控制台建议滚动抽奖

284 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天, 点击查看活动详情

前言

制作滚动抽奖的缘由:为什么要弄一个控制台滚动抽奖呢?

市面上抽奖的东西多了去了。其实是当初初学Python的时候,对一些没见过的东西感兴趣吧。虽然说市面上的抽奖层出不穷。但是远没有自己实现的东西来的实在。

每当自己手动实现一个小东西的时候,总会有满满的成就感。希望大家能够保持最初的的那份热忱啊,与诸君共勉~🚌🚌🚌

用到的库包括随机函数random以及监听键盘事件的keyborad库。利用keyboard.is_pressed()监听键盘的输入。

主要是如何清空控制台,实现模拟滚动的效果,这里先卖个关子,如果是你,在Python中,你会考虑如何实现,从而达到滚动抽奖的效果呢?

注意,本文只在控制台实现了滚动的效果,并没有实现很炫酷的效果,读者可以自行尝试利用窗口设计的tkinter进行简单的设计。

游戏玩法:运行程序,按enter键,选出幸运儿

前置知识简介:

open("xxx.txt","r+") -- 打开文件

其中"r+"表示既可以读取还可以写,r:仅仅表示读入

本文中数据放置在多行,所以需要使用splitlines函数,表示按行读入。并返回获取的名称列表。

具体实现

实现思想:

最外层嵌套一个while true:每次清空控制台,(使用\r 回到某一行的开头) 输出一个名字。

采用keyboard.is_pressed()方法监听键盘的输入,当用户按下enter键的时候,跳出while循环,从而达到控制台滚动出现名字的效果。

实现代码

import random
import keyboard

if __name__ == "__main__":
    filename = "pool.txt"
    file = open(filename, "r+", encoding='utf-8')
    lst = file.read().splitlines()  # 按行读入数据
    random.shuffle(lst)  # 先打乱数据
    idx = 0
    n = len(lst)
    while True:
        print("\r%s " % (lst[idx]), end='')  # \r 回到某一行的开头
        idx = (idx + 1) % n
        if idx == 0:
            random.shuffle(lst)
        if keyboard.is_pressed('enter'):  # 按下enter键,停止
            break
    print("\rthe random is ", lst[idx])

实现效果

请添加图片描述

写在最后:这是初学者的一些些小实验,如有不妥还请指正!

往期好文推荐🪶

「MongoDB」Win10版安装教程

「Python」数字推盘游戏

「Python」sklearn第一弹-标准化和非线性转化