基数为10的int()的文本无效:'(1+1)(1+1)'

2024-09-28 22:40:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个递归函数,它以一个数字作为输入,并根据输入返回一个字符串。你知道吗

这是我的密码:

def sum_power2( n ): 

    n_int = int( n )

    if n_int == 0:

        return '1'

    else:

        return sum_power2( n_int * '(1 + 1)' )

最初,该代码导致的错误代码为

    can't multiply sequence by non-int of type 'str'

当n没有被转换成int时,现在我得到了这个错误代码。请帮我弄清楚,谢谢!你知道吗

对于和功率2(2)的和输入,输出应为'((1+1)(1+1))'


Tags: 字符串代码密码returnifdef数字can
3条回答
def sum_power2( n ): 
    n_int = int( n )
    if n_int == 0:
        return '1'
    else:
        return n_int * '(1 + 1)'

>>> sum_power2(2) '(1 + 1)(1 + 1)'

您的错误发生是因为您调用了sum_power2( n_int * '(1 + 1)' )。你知道吗

看起来您的主要问题是试图将intstring的组合输入到需要int的递归函数。
要使递归函数工作,您需要将原始问题简化为基本情况和退出。
我只是把n减少到1,然后退出并连接我们的结果,在命中基本情况时返回。你知道吗

如果这是你要找的,告诉我。你知道吗

**编辑**
工作代码: 定义总功率2(n):

n_int = int( n )

if n_int == 0:
    return '1'
elif n_int == 1:
    return '(1 + 1)'
else:
    return '(1 + 1)' + sum_power2( n_int - 1 )

打印总功率2(2)

结果:

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
1
(1 + 1)
(1 + 1)(1 + 1)
(1 + 1)(1 + 1)(1 + 1)
>>> 

如果我正确理解了这个问题,您希望sum\u power2(n)返回n个字符串副本(1+1),是吗?你知道吗

在这种情况下,递归方法是,对于n>;1,将字符串(1+1)附加到sum\u power2(n-1)的输出。(这将需要一个特例,当n=0时仅给出1)

看起来是这样的:

def sum_power2(n):
  if n == 0:
    return "1"
  elif n == 1:
    return "(1 + 1)"
  else:
    return sum_power2(n-1) + "(1 + 1)"

(另外,看起来你的参数是int,所以我省略了转换)

相关问题 更多 >