开心,终于写出了自己想要第23课递归,又有一个疑问,请大大帮忙!
感谢凌九霄让我明白了递归的逻辑,感觉不牢固,又复习了一下,终于写出了自己想要的二进制转换:def transec(n):
if n:
return transec(n//2)+str(n%2)
else:
return ''
x=int(input('请输入一个数:'))
print(transec(x))
然后我就想到10进制转换列表(课后第2题)也可以这么干,可惜不如愿,请大大们帮忙!
先写我最喜欢的转换:) n=345432625454325x=list(str(n)) print(x),哈哈。大大们不能用这个哈。
我写的一个,出来的结果太奇葩了,我还在想。else的return到底该怎么写。。大大们多多帮忙!
def get_digits(n):
if n:
return list(str(get_digits(n//10)))+list(str(n%10))
else:
return ''
x=int(input('请输入一个数:'))
print(get_digits(x)) def get_digits(n):
lst = []
if n % 10 == n:
lst.append(n)
else:
lst = get_digits(n // 10)
lst.append(n % 10)
return lst
这题是不是无解的,大大们都不出手。。。 本帖最后由 凌九霄 于 2018-6-27 17:24 编辑
cable 发表于 2018-6-27 17:11
这题是不是无解的,大大们都不出手。。。
你那return我表示没看明白 凌九霄 发表于 2018-6-27 17:10
这个大大实在太好了,赞你,每次你的回复都能让我学会新的东东!
学到这里,要整合着用了,我觉得前面学的不是很扎实,我多问一下哈。。。原谅我厚颜。。。
1、是否我前面写的那串是不是无解的,因为函数是不能return完全空值的,会赋一个NONE出来;
2、我前面类似的也写了你这串,但是一直不成功,参考你这个,我改了一下,竟然成功了
def get_digits(n):
if n:
lst=get_digits(n//10)
lst.append(n%10)
return lst
else:
return []
x=int(input('请输入一个数:'))
print(get_digits(x))
我前面自己写的这串是这样的:
if n:
return get_digits(n//10).append(n%10)
结果一直告诉我无类对象不能用append,我简直要气炸了!!!然后也一直没改出正确的来,看了你的,我大约有点概念了,可以的话,能再讲的细一点吗? 凌九霄 发表于 2018-6-27 17:20
你那return我表示没看明白
我是被逼的狠了,才用的这个笨办法,是想底层反一个空值出来,然后可以转成列表相加实现;
然后,我为什么我会用这个笨办法,就是因为无类对象不能用append把我难住了,我之前写的是这样的:
return get_digits(n//10).append(n%10)
非常感谢你,一些细碎的不扎实的地方,在你的指导下,一点点在弥补。 cable 发表于 2018-6-27 17:44
这个大大实在太好了,赞你,每次你的回复都能让我学会新的东东!
学到这里,要整合着用了,我觉得前面 ...
有点小问题,你输入0试试 0也不行,我试了下面这个也不行,return 出来的值做str和list会把[],''全部当成字符来处理,所以加出来的东西会很奇葩。但至少我明白一个道理,最后一层取不到,可以取倒数第二层嘛,哈哈!谢谢你的小技巧!
def get_digits(n):
if n%10==n:
return list(str(n))
else:
return list(str(get_digits(n//10)))+list(str(n%10))
x=int(input('请输入一个数:'))
print(get_digits(x)) 我就是说你写的这个有问题
def get_digits(n):
if n:
lst=get_digits(n//10)
lst.append(n%10)
return lst
else:
return []
x=int(input('请输入一个数:'))
print(get_digits(x))
输入0会输出空列表 凌九霄 发表于 2018-6-28 15:51
我就是说你写的这个有问题
感谢大大,我只能改成这个破样子了,还是你的简洁一点:
def get_digits(n):
if n % 10 != n:
lst=get_digits(n//10)
lst.append(n%10)
return lst
else:
lst=[]
lst.append(n%10)
return lst
x=int(input('请输入一个数:'))
print(get_digits(x))
页:
[1]