本帖最后由 冰封雪舞 于 2018-1-24 22:59 编辑
如果你是想问为什么用retrun c后,在用print(m(789))后就会多打印一个1的话,我可以回答你,是你的返回值出了问题,这个问题很简单,只要你做几个判断就可以了,首先我们要判断出你主程序的print函数打印出什么了呢(也就是你的程序最后一句print(m(789)))?这里我可以明确告诉你这个print只打印出来一个数字,就是1,这个1就是你的程序最后多出来的那个1,因为你的m()函数返回值是c,而最后一个c的值是1,所以print打印出来一个1,那么前边那些正确答案1100010101是怎么来的呢?那个是你函数里边的print函数打印出来的,也就是for循环里边那个print打印出来的,当你在主程序中调用这个函数时,它会自动的打印出来。其实你要用你的程序里边判断这一点很轻松,你把程序稍微改动下,比如改成下边这个程序你就能看出来了:
def m(a):
temp=[]
c=''
while a:
b=a%2
a=a//2
temp.append(b)
temp=reversed(temp)
for c in temp:
print('*',c,end='')
return c
print(m(789))
所以你这个程序即使不用return 跟最后print(m(789)),只要单纯执行下m(789)函数,正确答案就打印出来了。
或者你干脆把你m函数里边的print删掉,你就能更明白了,比如:
def m(a):
temp=[]
c=''
while a:
b=a%2
a=a//2
temp.append(b)
temp=reversed(temp)
for c in temp:
#print('*',c,end='')
return c
print(m(789))
这次你的结果就是单纯的1.明白了吗?
另外我对你不好好看我的回答表示愤慨,每次我都是认真回答,你看看你回复的什么啊!
“你这个是对的,但是我是看的小甲鱼视频,哪个.join我还没学。所以我现在不忙看你这个,我希望的是了解我自己的是在哪里错误”
我的回答里边哪里用到了.join了?这简直是侮辱人,费劲巴拉的认真猜想回答你的提问,最后你都没好好看。这是我最后一次回复你的这个问题了。