「Python」控制台建议滚动抽奖
前言
制作滚动抽奖的缘由:为什么要弄一个控制台滚动抽奖呢?
市面上抽奖的东西多了去了。其实是当初初学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])
实现效果
写在最后:这是初学者的一些些小实验,如有不妥还请指正!