【问题标题】:Recursive function that saves a number provided certain conditions在某些条件下保存数字的递归函数
【发布时间】:2020-01-30 19:40:07
【问题描述】:

我正在尝试在 Python 中创建一个函数,如果它大于或等于先前在输入中提供的另一个数字(并保存在另一个变量上),则使用递归保存某个数字。

a = 6

def attempts(k):
    n = int(input("How many attempts do you want to make? "))
    if n>=k:
        return n
    else:
        print("You must make at least {} attempts to play!".format(k))
        attempts(k)

b = attempts(a)

问题是,如果我不立即插入“正确”数字,变量 "b" 就会变成 NoneType。我怎么解决这个问题? 抱歉有任何错别字,我不是母语人士。

【问题讨论】:

  • return attempts(k)

标签: python function recursion definition


【解决方案1】:

将函数的最后一行更改为:

return attempts(k)

目前,从第一个递归调用(如果发生)开始的结果被丢弃,这导致最外面的调用返回None

【讨论】:

    【解决方案2】:

    在 else 语句中,您没有返回任何内容,将 b 设置为空。在 else 语句中添加一个 return 语句,如果出现 else 语句,则返回您希望 b 等于的任何值。

    您的代码现在的工作方式,您应该在 else 语句中添加 return attempts(k) 并删除当前的最后一行 attempts(k) 这将工作相同,除了 b 将有一个值。

    【讨论】:

      【解决方案3】:

      else 的情况下,您评估attempts(k) 但不返回它。所以它被评估为None。改变

      attempts(k)
      

      return attempts(k)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-15
        • 1970-01-01
        • 2016-10-09
        • 1970-01-01
        • 2015-08-30
        相关资源
        最近更新 更多