python - 值不断设置为无
问题描述
我有一个递归函数,它会调用自己,直到它得到正确的输入。
def input_something(prompt = ""):
playerInput = input(prompt)
if playerInput == "":
print("Error: No input")
input_something(prompt)
elif not playerInput.isspace():
return playerInput
else:
print("Error: Incorrect input")
input_something(prompt)
while True:
print("Input Value")
inp = input_something("> ")
print(type(inp))
print(inp)
print("\n")
如果你给它一个正常的值,这个函数就可以正常工作,但是如果你先给它一个空字符串,然后给它一个字符/字符串,它就会中断。它没有按预期输出字符串,而是给出了 None 类型。
谁能解释一下?
解决方案
您需要return
递归调用的结果:
def input_something(prompt = ""):
playerInput = input(prompt)
if playerInput == "":
print("Error: No input")
return input_something(prompt)
elif not playerInput.isspace():
return playerInput
else:
print("Error: Incorrect input")
return input_something(prompt)
否则,递归调用的函数将运行但其返回值将被丢弃。请注意,您的原始功能不在return
三个分支中的两个中。在 Python 中,不返回任何内容意味着返回的值为None
.
推荐阅读
- vue.js - Vue 3 的断点/响应式插件
- docker - 从 docker 文件中执行 gradle 任务
- django - 在 Django Admin 中使用 Djongo 的 ArrayField
- razor - 隐藏控件后,如何以 Razor 形式使用空白?
- html - 不同浏览器的 SVG 大小不同
- python - 将 Jupyter Notebook 导出为 PDF 格式时丢失和未定义的控制序列错误
- google-cloud-platform - 如何使用 ConfigConnector 将 K8s ServiceAccount 绑定到 Google 服务帐户
- node.js - 从 API 端点获取数据后 useState 不更新状态对象
- c# - System.Text.Json - 在调用 JsonSerializer.Serialize() 时有条件地使用 JsonConverter 和 JsonConverterAttribute
- python - 模拟整个属性类