gpt4 book ai didi

python - 尝试从嵌套函数链(在 Python 中)返回 True 变量...

转载 作者:行者123 更新时间:2023-11-30 23:25:14 25 4
gpt4 key购买 nike

我正在尝试用 Python 编写冒险游戏程序的一部分,尽管我已经完成了大部分内容,但我仍然试图返回一个在一个分支末尾声明为“True”的值。功能链。基本上,这是一场与怪物的战斗,如果你选择正确的选项,你就能获胜。如果你赢了,你就会得到他守护的弓。这是战斗代码:

#The first line imports all the text displayed in the game, saved in gametext.py
#For purposes of clarity, all text has been saved to variables imported by the file.
#Any variable that is not "HaveBow", "why" or declared by a raw_input() is actually text.

from gametext import *

def BG_fight():

print BowGuardIntro
print InitOptions

BGfirstmove = raw_input('> ')

if BGfirstmove == "1":
spearfight()
elif BGfirstmove == "2":
dead(BGUnarmed1)
else:
dead(BGUnarmed2)

def spearfight():
print GotSpear
print SpearFight

spearact = raw_input("> ")

if spearact == "1":
blindfight()
elif spearact == "2":
dead(SeeChest)
elif spearact == "3":
dead(SeeArms)
else:
dead(NoUseSpear)

def blindfight():
print BlindFight

followblow = raw_input("> ")

if followblow == "1":
print Victory
HaveBow = True
return HaveBow

elif followblow == "2":
dead(BlindArms)
else:
dead(BlindNoKill)

def dead(why):
print why
exit(0)

BG_fight()

(如果人们感兴趣,我也可以生成游戏文本文件的内容,尽管我不想这样做,因为它很长并且与我遇到的问题无关)

正如您所看到的,只有一个分支提供了获胜条件(这将给出我想要返回的 HaveBow = True 值),并且它嵌套了两个深度函数,并且是 if 语句的一部分。我想知道的是如何将“HaveBow = True”值返回到函数链之外,以便它可以在游戏的其他部分使用?如果我尝试编码:

HaveBow = blindfight()
print HaveBow

在代码末尾并尝试运行它,它只会让我在声明“True”之前重复游戏的该部分两次。如果我尝试使用BG_fight()而不是blindfight(),情况也是如此。但我不想要这样;我只想要“HaveBow”为“True”,这样我就可以在游戏的其他部分使用条件“HaveBow = True”。

简而言之,我的问题是是否可以从嵌套函数链返回一个值而不重复该链的代码,如果可以,如何实现?

谢谢。

最佳答案

您只能返回一个,而不能返回名称和值。换句话说,你不能“return HaveBow = True”;你所能做的就是返回True。无法在返回值的同时将其分配给函数外部存在的变量。如果要赋值,需要在函数外进行。

根据您的说法,您似乎希望 HaveBow 成为一个可以在程序中的任何位置使用的全局变量。在这种情况下,您可以更改 blindfight 中的代码来执行以下操作:

if followblow == "1":
global HaveBow
print Victory
HaveBow = True

请注意,在这种情况下,您不需要返回 True 值 - 您只需将其直接分配给全局变量即可。

最终有更好的方法来构建代码,但这些问题超出了本问题的范围。目前,我建议,如果您有像 HaveBow 这样的全局状态,您希望能够使用“游戏中的任何其他地方”,则应该使用 global 来创建这些全局变量 正如我在示例中所示。随着您学习更多编程,您将逐渐了解为什么使用全局变量通常不是最好的主意,但就本程序而言,它是最简单的解决方案。

关于python - 尝试从嵌套函数链(在 Python 中)返回 True 变量...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23102486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com