Python 如何对函数调用进行评分
我刚开始学习编码,目前正在制作一款篮球视频游戏。然而,我似乎不能把分数加得很对。每次循环重新启动时,它只是重置为零,然后向变量添加2。有没有一种方法可以在每次循环返回时继续添加数字,这样它就不会重置 下面是一个非常简单的版本: 敌方得分=0 def敌人_分数(): 打印(“敌人分数”) 打印(敌人得分加1分) 返回 敌人得分()#这只是函数被调用过的情况 敌人得分() 敌人得分()Python 如何对函数调用进行评分,python,Python,我刚开始学习编码,目前正在制作一款篮球视频游戏。然而,我似乎不能把分数加得很对。每次循环重新启动时,它只是重置为零,然后向变量添加2。有没有一种方法可以在每次循环返回时继续添加数字,这样它就不会重置 下面是一个非常简单的版本: 敌方得分=0 def敌人_分数(): 打印(“敌人分数”) 打印(敌人得分加1分) 返回 敌人得分()#这只是函数被调用过的情况 敌人得分() 敌人得分() 以下是与您的解决方案最相似的解决方案,它只解决了代码的问题: score_of_enemy = 0 def en
以下是与您的解决方案最相似的解决方案,它只解决了代码的问题:
score_of_enemy = 0
def enemy_score():
global score_of_enemy
print(" ENEMY SCORE")
score_of_enemy = score_of_enemy.__add__(1)
print(score_of_enemy)
enemy_score() # this is just if the function is ever called
enemy_score()
enemy_score()
结果:
ENEMY SCORE
1
ENEMY SCORE
2
ENEMY SCORE
3
这些问题是:
敌人的全球得分
score\u敌人。add\uu(1)
将1
添加到score\u敌人的值中
,但不将结果值存储回score\u敌人的值中。您必须明确地这样做,如我的版本所示
print
语句中,因此我将这两个操作分为几行return
语句一个参数来指定要返回的内容,则不需要它。函数末尾的return
是多余的\uuuu add\uuuu
是不寻常的,因为它与+
是一样的。大多数程序员使用+
。您可以使用+=
进一步缩写该行。因此,敌方的得分=敌方的得分。敌方的得分(1)等于敌方的得分+=1
为了让您了解如何避免使用global
(根据注释),下面是另一个避免使用的版本。这里看起来更复杂,确实如此,但这只是因为这段代码只是一个简单的示例。在现实生活中,遵循此模式将使代码更具可读性和稳定性:
score_of_enemy = 0
def enemy_score(score):
print(" ENEMY SCORE")
score += 1
print(score_of_enemy)
return score
score_of_enemy = enemy_score(score_of_enemy) # this is just if the function is ever called
score_of_enemy = enemy_score(score_of_enemy)
score_of_enemy = enemy_score(score_of_enemy)
对于这样一个简单的任务,函数似乎不是适合该任务的工具。相反,我将直接增加变量:
score = 0
score = score + 1
print(score)
# or
score += 1
print(score)
如果你正在跟踪一个“敌人”的多个属性,那么你最终会想要了解类。这些允许您存储分数以及与“敌人”相关的其他数据。在
print()
之外添加敌人分数+=1
,只需打印(敌人分数)
,否则不会向敌人分数添加任何值。这是否回答了您的问题?我在您的示例代码中没有看到循环。对foreign\u score()
的3个调用是否模拟了完整代码中循环中的多个调用?我很好奇您下面的代码示例显示了如何使用\u add\u()
。正如其他人所指出的,这是不寻常的,因为它更容易、更自然地编写敌人+1的分数。如果您在代码示例中看到\uuuu add\uuuu()
,我建议您避免使用该内容,因为它会教您一些糟糕的习惯。谁知道他们还做了什么你不应该做的事情呢。而且,从完整的代码来看,这个例子似乎过于简单了。要增加一个变量,函数是多余的。你可以直接用score\u of_敌军+=1
这样的方法来做。我怀疑您的实际代码更复杂,并且有更好的解决方案来解决您的问题。然而,我很难推荐一件事,因为有很多可能性。作为OP的旁注,以这种方式使用全局变量被认为是一种不好的做法。在大型程序中,全局变量可能导致难以发现的错误。我鼓励您(OP)学习更多关于局部变量、函数参数、从函数返回值以及包含方法和字段的类的知识。这些是我们用来封装数据和行为的工具,它们使得全局变量变得不必要。我知道有很多东西要学。我只是想把你推向正确的方向,我同意。我只是想把反馈限制在最直接的问题上。我的世界里有很多Python代码,一些是我自己编写的,另一些是我维护的。如果我在所有的ode中都找不到一个使用global
关键字的地方,我也不会太惊讶。只是还没做完。Python,IMO,如果将该关键字从语法中删除,将是一种更好的语言。在这样的回答中避免使用global
关键字的麻烦在于,实际上存在无限可能的解决方案。从问题的有限信息来看,“正确”的答案并不明显。所以我理解你为什么用这种方式写你的答案。我同意@Code学徒在变量上使用a不是最好的方法。