如何在python中使用名称中的变量

2024-09-24 04:20:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python设计一个游戏。 假设我有5个能级和一个变量m。 如果我在一级,m将是101 如果我在2级,m将是102,以此类推

现在,我还有一个变量,用于所有级别的最佳分数,比如说b_101,b_102,b_103,b_104,b_105。全部初始设置为0。你知道吗

现在当我玩的时候,我有一个可变的当前分数。 我想在满足某些条件时更新最佳分数。你知道吗

if(condition met):
   global m
   update_score(m)

def update_score(m):
    if(m==101):
        b_101=current_score
    elif(m==102):
        b_102=current_score
    elif(m==103):
        b_103=current_score
    elif(m==104):
        b_104=current_score
    elif(m==105):
        b_105=current_score

现在在实际中,我可能有100个级别,我希望我的update\u score函数很小,不写100行if else。你知道吗

我希望它是这样的:

def update_score(m):
    b_{m}=current_score

我知道上面的代码是不正确的,但是我想在m的基础上更新一些b\u xxx,这在python中是可能的。你知道吗

在perl中,可以这样做

${'b_'.$m} = $current_score;

Tags: 函数游戏ifdefupdatecurrent级别condition
2条回答

用字典就行了。你知道吗

def update_score(m, score, scores = {}):
    scores[m] = score

我觉得上课比较好。所以你有无限的等级。太容易修改了

class ScoreStore:
  def __init__(self, max_level=100):
    for i in range(101, max_level + 1):
      setattr(self, "b_{}".format(i), None)
    self.current_score = None

  def update_score(self, m):
    setattr(self, "b_{}".format(m + 100), self.current_score)

  def get_score_of_level(self, m):
    return getattr(self, "b_{}".format(m + 100), self.current_score)

但是口述是最容易的

相关问题 更多 >