如何创建一个空字符串并更新它[重复]
Posted
技术标签:
【中文标题】如何创建一个空字符串并更新它[重复]【英文标题】:How to create an empty string and update it [duplicate] 【发布时间】:2020-06-11 20:41:57 【问题描述】:我正在用pygame做一个游戏,我想让玩家输入他的名字,这样在玩的时候它就会出现在屏幕上。我尝试了一个列表:
def input_player_name():
player_name_screen = True
name_list = []
win.blit(player_name_bg, (0, 0))
while player_name_screen:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
name_list.append("a")
elif event.key == pygame.K_b:
name_list.append("b")
elif event.key == pygame.K_c:
name_list.append("c")
elif event.key == pygame.K_d:
name_list.append("d")
elif event.key == pygame.K_e:
name_list.append("e")
elif event.key == pygame.K_RETURN:
print (name_list)
player_name_screen = False
pygame.display.update()
clock.tick(fps)
这行得通。但是我想用一个字符串来做,所以它会创建一个空字符串,玩家在键盘上输入他的名字时会更新它。有没有办法做到这一点?或者,也许您可以将我重定向到一个已经存在的页面,其中有人问了这个问题(我还找不到)?谢谢你的回答=D
【问题讨论】:
name_string += "d"
如果您发现自己创建了大量案例,您可能正在做一些过于复杂的事情。您根本不需要 1) 检查按下的字母是否为 'a' 和 2) 将 'a' 添加到名称中,然后对任何可能的按键再次执行此操作。只需将字母捕获为变量并添加该变量,无论它是什么。
【参考方案1】:
使用event.unicode
:
例如:
player_name_screen = True
name = ""
while player_name_screen:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
print (name)
player_name_screen = False
else:
name += event.unicode
如果您想将输入限制为字母,那么您可以执行以下操作:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
print (name)
player_name_screen = False
elif 'a' <= event.unicode <= 'z' or 'A' <= event.unicode <= 'Z':
name += event.unicode
【讨论】:
非常感谢@Rabbid76,效果很好!以上是关于如何创建一个空字符串并更新它[重复]的主要内容,如果未能解决你的问题,请参考以下文章
将识别列表中的空字符串并在那里打印标记/符号的函数(Python Tic-Tac-Toe)
Mongoose:唯一字段,如果它不为 null 或空字符串 [重复]