为了账号安全,请及时绑定邮箱和手机立即绑定

如何减少输入字符串的长度?

如何减少输入字符串的长度?

炎炎设计 2021-08-14 15:38:42
我定义了一个返回位数的递归函数:def counter(z, c = 0):    z = len(z)    if z == 0:        return c    else:        return counter(z - 1,c + 1)我知道在第二次调用时,该函数会将整数 3 的长度分配给 z。如何分配前一个字符串减去一个字符,以便我的函数计算每个字符?
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

不要这样做z=len(z),因为您需要将原始z传递给递归调用。相反,请执行zl=len(z),将您更改if为zl==0,并制作您的最后一行return counter(z[1:], c+1)。带冒号的方括号是切片运算符;"abc"[1:]=="bc".


...顺便说一句,从技术上讲,您甚至不需要获取len()of z,因为 python 在 if 表达式中将空列表视为假。所以你的代码可能只是:


def counter(z, c=0):

    if not z: return c

    return counter(z[1:], c+1)


查看完整回答
反对 回复 2021-08-14
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

您只需在第一次调用函数时传递 z 的长度。


def counter(z, c = 0):

if z == 0:

    return c

else:

    return counter(z - 1,c + 1)


# Main call

z = len(z)

result = counter(z)


查看完整回答
反对 回复 2021-08-14
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您只需要对字符串进行切片。例如使用z[:-1]. 这将返回所有字符减去最后一个。或者,您可以使用len(z). 设置z=len(z)也不起作用,因为您松开了绳子。


查看完整回答
反对 回复 2021-08-14
  • 3 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信