[英]Python: Using variable in for loop for substitution
我正在嘗試在利用pygame的Python程序中壓縮重復。 我目前有一些這樣的行:
if pygame.key.get_pressed()[pygame.K_q]: q.PerformNote()
if pygame.key.get_pressed()[pygame.K_w]: w.PerformNote()
if pygame.key.get_pressed()[pygame.K_e]: e.PerformNote()
if pygame.key.get_pressed()[pygame.K_r]: r.PerformNote()
if pygame.key.get_pressed()[pygame.K_t]: t.PerformNote()
我想實現以下目標:
keyList = ['q', 'w', 'e', 'r', 't']
for currentKey in keyList:
if pygame.key.get_pressed()[pygame.K_currentKey]:
currentKey.PerformNote()
產生的錯誤是
AttributeError:“模塊”對象沒有屬性“ K_currentKey”
我想我最近可能在BASH上花費了太多時間,因為這種構造對我的大腦來說是完全合理的。 我四處搜尋,卻不知道實施此方法的正確方法。
將pygame鍵映射到其對應的變量:
keyMap = {
pygame.K_q: q,
pygame.K_w: w,
pygame.K_e: e,
pygame.K_r: r,
pygame.K_t: t,
}
然后,您可以執行以下操作:
pressed = pygame.key.get_pressed()
for key, toProc in keyMap.items():
if pressed[key]:
toProc.PerformNote()
如果要從具有名稱的字符串中檢索類成員,請嘗試:
keyList = ['q', 'w', 'e', 'r', 't']
for currentKey in keyList:
if pygame.key.get_pressed()[getattr(pygame, 'K_' + currentKey)]:
currentKey.PerformNote()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.