python中输入不大于5的数,倒序输出

问题遇到的现象和发生背景

return (m[len(m)-1]+fun(m[:(len(m) - 1)]) )
这个是什么意思,当我单独把def fun 拿出来用,结果却是各个元素和

def fun(m):
    if len(m) == 1:
        return m[0]
    else:
        return  (m[len(m)-1]+fun(m[:(len(m) - 1)]))
s=[1,2,3,4,4]

print(fun(s))
问题相关代码,请勿粘贴截图

输入不大于5的数,倒序输出

def fun(m):
    if len(m) == 1:
        return m[0]
    else:
        return (m[len(m)-1]+fun(m[:(len(m) - 1)]) )

def main():
    s = str(input("请输入一个不多于5位的正整数:"))
    if len(s)>5:
        print("输入 数字超过限定位数,输入无效")
    else:
        print('数位:%s\n输入的数字:%s\n逆序数字:%s' % (len(s), s, fun(s)))

if __name__ == '__main__':
    main()

运行结果及报错内容
我的解答思路和尝试过的方法

把加号换成逗号,会变成元组,且每次少一个数

我想要达到的结果

是想叫他倒序输出

你的示例代码运行是没错的,如图

img

但可以优化一下,优化如下

def main():
    s = str(input("请输入一个不多于5位的正整数:"))
    if len(s) > 5:
        print("输入 数字超过限定位数,输入无效")
    else:
        print('数位:%s\n输入的数字:%s\n逆序数字:%s' % (len(s), s, s[::-1]))


if __name__ == '__main__':
    main()

你单独将函数fun 取出来使用,但你的数据是列表,列表元素是数字,原本代码是字符串,数字的加号是相加,字符串的加号是并接,所以结果不一样,你可以将列表每个元素转为字符串即可,如下

def fun(m):
    if len(m) == 1:
        return m[0]
    else:
        return (str(m[len(m) - 1]) + str(fun(m[:(len(m) - 1)])))


s = [1, 2, 3, 4, 4]

print(fun(s))

程序没问题。单独拿出来运行,你的数据有问题,要求是不超过5位数的整数,你给的S本身就是个元组。要这样调用:

img

如有帮助,请 采纳。

这个代码可以简化为return m[-1] + fun(m[:-1])
len(m)-1就是表示最后一位,直接用-1表示就可以
这句的意思是提取最后一位,后面再加上这个函数也就是再加上最后一位,一直加最后一位,这样就变成倒序了
但是倒序完全不需要这样,太麻烦了
可以这样:

s[::-1]