如何从所选列表中选择项目?

时间:2021-07-07 20:03:07

标签: 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()

2 个答案:

答案 0 :(得分:4)

我使用字典实现了以下功能,尽管它不是必需的。根据您想对单词列表执行的操作,您可以使用或不使用字典编写脚本。 (这两者都应该很容易直接实现到您的 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 

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

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,需要像上面一样解码才能使用。

答案 1 :(得分:2)

不要为每个字符创建单独的列表,而是考虑使用字典来保存所有列表,键是各种字符。例如,

ch_lsts = {
    "a": ["ananas", "arbuz", "agrest"],
    "b": ["banan", "balon", "beton"],
    "c": ["cytryna", "cebula", "candy"],
    ...,
    "z": ["zebra", "zombie", "zonk"]
}

然后,当您准备好选择给定字符的列表时,只需使用 ch_lsts["c"](或任何字符)检索指定的列表,然后对该列表执行任何您想要的操作。

>
相关问题