求助:字符串存储不了
如下代码,用列表进行存储能够计算出来,但是用字符串进行存储就出不来,求大神指点result = []
def sze2(x):
if x > 1:
sze2(x // 2)
return result.append(x%2)
elif x ==1 or x ==0 :
return( result.append(x))
sze2(1689)
print(result)
result = ''
def sze2(x):
if x > 1:
sze2(x // 2)
return result + str(x%2)
elif x ==1 or x ==0 :
return( result +str(x))
sze2(1689)
print(result) result = ''
def sze2(x):
global result
if x > 1:
sze2(x // 2)
result +=str(x%2)
elif x ==1 or x ==0 :
result += str(x)
sze2(1689)
print(result) 本帖最后由 heidern0612 于 2018-11-21 19:32 编辑
1、牵扯到字符串和列表储存的机制不同,列表可以做的不代表字符串可以做大, 但这不是主要理由……
2、楼上的大神解释的很清楚,你函数内部的result没定义,这个result跟外面的result虽然标签一样,但是内存的位置不一样,简单来说就是不是一个东西。
3、最主要原因是:你这个是+,而不是+= 的话,算到最后result也是个默认的空值,不信你可以试试把楼上大神代码改一下,把+=改成+,试试看,结果一样还是什么都没有。
就因为你每次没有把上次的结果加进来,result没有自增上次结果的话,算到最后也是个空。
简单给你分析下:
result = ''
def sze2(x):
global result
if x > 1:
sze2(x // 2) #首次循环,假定x为10,这里值为sze2(5);二次循环x为5,sze2(2);三次循环x为2,sze2(1);……
result +str(x%2) #空+str(0) ;二次循环,空+str(1);三次循环,空+str(0);……
#到这看出来了吗?你的字符串始终都是默认的空值,并没有加起来,所以你下面无论打印什么,字符串都是空,就是这个原因。
elif x ==1 or x ==0 :
result + str(x)
sze2(10)
print(result)
塔利班 发表于 2018-11-21 18:51
谢谢大佬
页:
[1]