鱼C论坛

 找回密码
 立即注册
查看: 3715|回复: 7

[已解决]请教一下函数问题

[复制链接]
发表于 2016-6-22 00:45:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def Dec2Bin(dec):
    temp = []
    result = ''
   
    while dec:
        quo = dec % 2
        dec = dec // 2
        temp.append(quo)

    while temp:
        result += str(temp.pop())
   
    return result

print(Dec2Bin(100))
这道题关于那个result = ' ' 和
while temp:
        result += str(temp.pop())
return result
有什么作用!纯小白真的不懂。。
最佳答案
2016-6-22 08:29:22
temp得到的是一个列表,是2进制的值,但是反向排列的。
result是为了存放最后的结果,需要先赋以一个初值,空字符串。再通过pop依次将尾部的列表值的字符串加到result中,将结果正向排序输出。
如果使用字符串的join方法程序可以更简单。
  1. def Dec2Bin(dec):
  2.     temp = []
  3.     result = ''
  4.    
  5.     while dec:
  6.         quo = dec % 2
  7.         dec = dec // 2
  8.         temp.append(str(quo))

  9.     temp.reverse()
  10.     return ''.join(temp)

  11. print(Dec2Bin(100))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-22 08:29:22 | 显示全部楼层    本楼为最佳答案   
temp得到的是一个列表,是2进制的值,但是反向排列的。
result是为了存放最后的结果,需要先赋以一个初值,空字符串。再通过pop依次将尾部的列表值的字符串加到result中,将结果正向排序输出。
如果使用字符串的join方法程序可以更简单。
  1. def Dec2Bin(dec):
  2.     temp = []
  3.     result = ''
  4.    
  5.     while dec:
  6.         quo = dec % 2
  7.         dec = dec // 2
  8.         temp.append(str(quo))

  9.     temp.reverse()
  10.     return ''.join(temp)

  11. print(Dec2Bin(100))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-22 08:32:03 | 显示全部楼层
本帖最后由 lizuolong 于 2016-6-22 08:34 编辑

这道题关于那个
result = ' ' 就是初始化变量的值,为后面循环里面计算提供方便,python变量必须先赋值才能用
while temp:
        result += str(temp.pop())
return result
作用就是temp数组里所有的元素拼接在一起


result += str(temp.pop())  就是把temp数组最后一个元素取出转为字符和result拼接在一起,并删除最后数组中的最后一个元素




你这个是十进制转2进制码?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-22 11:34:11 | 显示全部楼层
冬雪雪冬 发表于 2016-6-22 08:29
temp得到的是一个列表,是2进制的值,但是反向排列的。
result是为了存放最后的结果,需要先赋以一个初值 ...

请问下这个return返回的值是返回给函数Dec2Bin还是给temp呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-22 11:43:06 | 显示全部楼层
lizuolong 发表于 2016-6-22 08:32
这道题关于那个
result = ' ' 就是初始化变量的值,为后面循环里面计算提供方便,python变量必须先赋值才 ...

请问下这个return返回的值是返回给函数Dec2Bin还是给temp呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-22 14:22:34 | 显示全部楼层
xd258749745 发表于 2016-6-22 11:34
请问下这个return返回的值是返回给函数Dec2Bin还是给temp呢?

return result是把数值返回给调用者,这里就是主程序,即print打印的内容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-22 15:17:17 | 显示全部楼层
冬雪雪冬 发表于 2016-6-22 14:22
return result是把数值返回给调用者,这里就是主程序,即print打印的内容

那我可不可以这样理解就是先在Dec2Bin函数中输入100通过一系列的循环赋值,最后的值返回给上面的def Dec2Bin(dec)然后通过print(Dec2Bin(输入值))来显示的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-22 15:24:21 | 显示全部楼层
xd258749745 发表于 2016-6-22 15:17
那我可不可以这样理解就是先在Dec2Bin函数中输入100通过一系列的循环赋值,最后的值返回给上面的def Dec2 ...

return的是函数的返回值,你把函数理解成一个黑箱,进去的是函数的参数,这里是200,出来的是返回值,这里是'1100100'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-21 10:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表