You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

石头剪刀布游戏输入校验函数首次输入无效时返回None的问题咨询

解决石头剪刀布输入校验函数返回None的问题

你碰到的这个问题其实是递归调用里很容易踩的小坑——你在递归调用check(x)的时候,没有把它的返回值传递出去。

咱们来拆解一下问题流程:

  1. 第一次输入无效(比如"A"),进入else分支,重新获取输入"s",然后调用check("s")
  2. 内层的check("s")检测到输入有效,返回了"s",但外层的else分支只是调用了这个函数,没有把返回值return出去
  3. 外层的check函数执行完else分支后,没有任何return语句,Python函数默认会返回None,这就是你最后看到的结果

修正后的代码

def check(x):
    x = str.lower(x)
    valid_input = ['r','p','s']
    print("Input value: "+str(x)) #simple check before if-else
    if x in valid_input:
        return x #valid input, return x
    else:
        print("Wrong Input!!!")
        x = input("Enter r/p/s:") #taking new input
        return check(x) # 这里要return递归调用的结果!

x = input("Enter choice: ") #Input value
x = check(x) #Call check function
print(x)

关键修改点

在else分支里,把原来的check(x)改成return check(x),这样内层递归函数返回的有效输入就能被传递回外层,最终整个check函数就能返回正确的结果了。

测试验证

输入选择:A
输出就会变成:

Input value: a
Wrong Input!!!
Enter r/p/s:s
Input value: s
s

这样就能得到你期望的有效输入返回值啦。

内容的提问来源于stack exchange,提问作者Abhijith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:34:33