有没有一种方法可以将代码存储在要运行的list
或字典中,而不是执行长if..elif
?比如:
my_dict = {'up': 'y=y+1', 'down': 'y=y-1', 'left': 'x=x-1', 'right': x=x+1'}
然后将选择与dict
匹配并运行结果?在
或者,传统的if..elif
链的下一个最佳选择是条件表达式:
除了纯粹的好奇之外,我问这个问题的部分原因是我正在用Pygame编写一个游戏来帮助学习Python编码。我有12个键,我正在检查是否被按下,我使用了一个非常长且笨拙的if..elif
结构,这让我觉得必须有一个更漂亮的方法来完成它。基本上我看到的是这样的:
for event in pygame.event.get():
if event.type == pygame.QUIT:
crashed = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_t:
red += 10
elif event.key == pygame.K_g:
red -= 10
elif event.key == pygame.K_5:
red += 1
elif event.key == pygame.K_b:
red -= 1
elif event.key == pygame.K_y:
green += 10
elif event.key == pygame.K_h:
green -= 10
elif event.key == pygame.K_6:
green += 1
elif event.key == pygame.K_n:
green -= 1
elif event.key == pygame.K_u:
blue += 10
elif event.key == pygame.K_j:
blue -= 10
elif event.key == pygame.K_7:
blue += 1
elif event.key == pygame.K_m:
blue -= 1
这就是我的Python代码应该是的样子吗?或者有没有一种更像Python的方式来编写代码呢?在
是的,有一种方法,但是通过使用函数:
然后把它叫做
d['up']()
。在为了避免使用全局变量,可以使用OOP方法:
^{pr2}$示例用法:
^{3}$对于这种情况,一种方法是将要加/减的值存储在字典中,然后检索并添加。像这样:
您可以在字典中存储函数,但函数不能修改其调用上下文的变量。如果您发现存储的“代码段”都具有相同的结构(这里每个代码段都是“向x添加一些内容”或“向y添加一些内容”),那么您可以做的是将代码分解到一个位置,并且只将参数存储在字典中(在这里可以存储要添加的值)。在
相关问题 更多 >
编程相关推荐