python - 如何从选定列表中选择一个项目?

标签 python list pygame

玩家输入字母 (a-z)。 该程序从以输入字母开头的列表中随机生成一个单词,并显示绘制的单词。 如何使输入的键成为列表的名称,可以从中随机选择以输入字符开头的单词? 可能还有什么其他方法可以做到这一点? 谢谢。

代码: 随机导入

import pygame
# list of letters (a-z)
a = ["ananas", "arbuz", "agrest"]
b = ["banan", "balon", "beton"]
c = ["cytryna", "cebula", "candy"]
# ...
z = ["zebra", "zombie", "zonk"]

pygame.init()
screen = pygame.display.set_mode((0, 0))
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        if event.type == pygame.KEYDOWN :
            if event.key == pygame.K_ESCAPE:
                running = False
            else:
                print(event.unicode)

pygame.quit()

最佳答案

我使用字典实现了以下功能,尽管这不是必需的。根据您想要对单词列表执行的操作,您可以使用或不使用字典来编写脚本。 (两者都应该很容易直接实现到您的 pygame 脚本中)

import keyboard
import random

a = ["ananas", "arbuz", "agrest"]
b = ["banan", "balon", "beton"]
c = ["cytryna", "cebula", "candy"]
# ...

words_dict = {}
words_dict['a'] = a
words_dict['b'] = b
words_dict['c'] = c
# ...

while True: 
    try:  
        if keyboard.is_pressed('a'):
            print(random.choice(words_dict['a']))
            break 
        elif keyboard.is_pressed('b'):
            print(random.choice(words_dict['b']))
            break 
        elif keyboard.is_pressed('c'):
            print(random.choice(words_dict['c']))
            break 
        # implement more elif here
    except:
        break 

您也可以直接创建一个包含所有内容的字典,而不是像我上面那样为每个列表分配一个键到字典中:

words_dict = {
    'a': ["ananas", "arbuz", "agrest"],
    'b': ["banan", "balon", "beton"],
    # and so on
}

不使用字典:

import keyboard
import random

a = ["ananas", "arbuz", "agrest"]
b = ["banan", "balon", "beton"]
c = ["cytryna", "cebula", "candy"]
# ...

while True: 
    try:  
        if keyboard.is_pressed('a'):
            print(random.choice(a))
            break 
        elif keyboard.is_pressed('b'):
            print(random.choice(b))
            break 
        elif keyboard.is_pressed('c'):
            print(random.choice(c))
            break 
        # implement more elif here
    except:
        break 

================================================== =============

更新:以下脚本检测用户的按键点击并检索/显示正确的信息,而无需使用案例来检查用户输入的按键。

import random
import msvcrt

words_dict = {
    'a': ["ananas", "arbuz", "agrest"],
    'b': ["banan", "balon", "beton"],
    'c': ["cytryna", "cebula", "candy"]
    # ... 
}

while True:
    if msvcrt.kbhit():
        key_pressed = msvcrt.getch()

        try:
            if words_dict.__contains__(key_pressed.decode('utf-8')):
                print(random.choice(words_dict[key_pressed.decode('utf-8')]))
                break
            else:
                print(f'Input "{key_pressed.decode("utf-8")}" is not recognized. Please try again!')
        except:
            break

请注意,变量 key_pressed 的类型为 bytes,在使用之前需要像上面一样进行解码。

关于python - 如何从选定列表中选择一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68292407/

相关文章:

python - HTTP POST 使用 httplib2 错误

c# - 列表分而治之——按值或引用传递

python - Pygame 运动问题

python-3.x - 如何在Python中运行的另一个程序上模拟Python中的按键事件

python - 获得最接近质心的点,scikit-learn?

python - 将统计数据与变量一起使用

python - 在图像中查找颜色并在第二张图像上重绘(使用numpy)

元组列表上的python映射

java - 如何在 ArrayList 中保留唯一值的原始顺序?

audio - 当在GUI上的某个位置单击时,Pygame会播放声音