python - 我正在 python 上创建一个文本游戏,并且对跨函数的变量有疑问
问题描述
我刚刚开始并想尝试使游戏取决于“剑”是否设置为真。但是当我运行它时,即使值已定义,它也不会返回任何内容。这只是问题所在的一小段代码。
def fight():
import time
sword = False
user = input()
if user == "run":
print("pick it up or leave it?")
user = input()
if user == "pick it up":
sword = True
print("fight or flee")
fight2()
elif user == "leave it":
print("you leave the sword")
#PATH OPEN
return sword
def fight2():
import time
user = input()
if user == "fight":
if fight():
print("you fight the dragon")
elif not fight():
print("you have no sword")
#PATH OPEN
fight()
我需要帮助if fight():
,它会运行。现在,当用户键入“fight”时,它什么也不返回。谢谢!
解决方案
正如其他人所提到的,您的控制流是不完整的。应该更像这样:
def fight2():
sword = False # default value
user = input()
if user == 'run':
# do stuff
elif user == "slide":
# do stuff
else:
# bad input, what to do?
return sword
目标是无论输入什么,该函数都应该执行返回语句。就个人而言,我喜欢只有一个 return 语句,这样可以更容易调试,但你可以有多个 return。
推荐阅读
- c++ - 没有递归的堆栈溢出?
- couchbase - couchbase N1QL group-by 在子文档中
- openshift - Openshift 上的 Openwhisk 多租户
- python - 安装mxnet时如何解决numpy错误?
- apache-spark - EMR 上的 Pandas udf 错误:类“io.netty.buffer.ArrowBuf”'
- python - 如何使用 Python 发送多个 HTTP 请求
- python - 从外部 css (django) 加载背景图像时出现问题
- xcode - 在 Xcode 上找不到模块“apple_sign_in”,但在 Android Studio 上构建了应用程序
- countdowntimer - Android Studio中的倒数计时器在时间间隔内跳过了一些秒
- python-3.x - 我该怎么做才能让我的 PyGame 窗口响应?