字典弹弹弹_Python字典还能这样玩,你没见过吧.

0 Comments

Python字典弹弹弹封面

这是Python字典的popitem()方法效果演示程序,收录在我的精灵宝典里。程序运行后会有一个字典显示在窗口内,按空格键它会弹出一对键值对。
这是程序运行结果:
Python字典弹弹弹
讲解网址是: https://www.douyin.com/discover?modal_id=7079023292513914143
下面是所有代码,想捡漏赶快复制代码,万一有一天我改变主意了呢?

"""
   字典弹弹弹.py
   Python字典的popitem()效果演示程序
   本程序需要sprites和gameturtle模块运行,请用cmd打开管理员窗口,
   输入pip install sprites和pip install gameturtle进行安装.
"""
from time import sleep
from random import randint
from gameturtle import single2multitext
from sprites import Sprite,txt3image,Key,Screen

screen = Screen()
screen.setup(660,660)
screen.title('字典弹弹弹_字典的popitem()效果演示程序by李兴球')

ftb = ('黑体',64,'normal')
ftm = ('黑体',34,'normal')
fts = ('黑体',16,'normal')
sleep(1.3)
kv = Sprite('blank')# kv不仅用来写文字,下面还会通过切换造型显示弹出去的键值对
kv.color('orange')
kv.goto(-250,230)
kv.write('字',align='center',font=ftb)
sleep(0.5)
kv.goto(250,230)
kv.write('典',align='center',font=ftb)
sleep(0.5)
kv.goto(0,-200)
kv.write('弹 弹 弹',align='center',font=ftm)
sleep(0.5)
kv.goto(0,-240)
kv.write('字典.popitem()效果演示程序',align='center',font=fts)
sleep(0.5)
kv.goto(0,-270)
kv.write('作者:李兴球',align='center',font=fts)
sleep(0.5)
kv.goto(0,-300)
kv.write('基于Python海龟模块的创作',align='center',font=fts)
sleep(0.5)


colors = {'red':'红','orange':'橙','yellow':'黄','green':'绿', 'cyan':'青',
          'blue':'蓝','purple':'紫','black':'黑','white':'白','gray':'灰'}

s = single2multitext(str(colors),58)         # 单行变多行,每行58字
s = "colors = " + s
txt3image(s,'res/zd.png')                    # s变成图像
zd = Sprite('res/zd.png')   # 把文本转换成的图像,再包装成角色叫zd
# 出场就来一个抖动效果
for _ in range(randint(12,24)):
    zd.addx(randint(-5,5))
    sleep(0.01)
    zd.addy(randint(-5,5))
    sleep(0.01)
zd.home()

spacekey = Key('space')                      # 新建按键,空格键
screen.listen()                              # 监听按键检测

while colors:                                # 当colors非空时
    # 写提示语
    kv.shape('blank')
    kv.sety(150)
    kv.write('请按空格键',align='center',font=('',16)) # 写上提示
    while not spacekey.downup():screen.update()# 没按空格键时不断刷新屏幕
    kv.clear()                            # 按了空格键后清除所写的
    kv.sety(0)                            # 设定它的y坐标为0 
    # 抖动效果
    for _ in range(randint(6,10)):
        zd.addx(randint(-5,5))
        sleep(0.01)
        zd.addy(randint(-5,5))
        sleep(0.01)
    zd.home()
    
    # 按空格键后弹出一对键值对,注意字典数据变少,所以要重新设定zd的造型
    key,value = colors.popitem()                    # 弹出键值对
    s = single2multitext(str(colors),58)            # 字典单行变多行
    s = "colors = " + s
    txt3image(s,f'res/zd{key}_{value}.png')         # 多行文本转图像
    zd.shape(f'res/zd{key}_{value}.png')            # 重设为此造型

    # 弹出去的键值对,组成元组,转换成图像,再包装成角色,滑行出去
    s = "colors.popitem() 返回: ('" + str(key) + "','" + str(value) + "')" # 弹出去的文本
    
    txt3image(s,f'res/poped{key}_{value}.png')   # 把s转成图像
    kv.shape(f'res/poped{key}_{value}.png')      # 把kv的造型设为这个图
    kv.slide((0,150))                            # 滑行到0,150
    kv.wait(2)                                   # 等待2秒
    kv.slide((0,550),1000)                       # 1秒内滑出去

screen.mainloop()


标签:

发表评论