鱼C论坛

 找回密码
 立即注册
查看: 1817|回复: 9

[已解决]《零基础入门python》第17讲动动手2

[复制链接]
发表于 2018-3-26 18:05:46 | 显示全部楼层 |阅读模式
3鱼币
完全看不懂下面的代码
麻烦各位大神帮忙解释下,谢谢各位大神了

  1. def Dec2Bin(dec):
  2.     temp = []
  3.     result = ''
  4.    
  5.     while dec:
  6.         quo = dec % 2
  7.         dec = dec // 2
  8.         temp.append(quo)

  9.     while temp:
  10.         result += str(temp.pop())
  11.    
  12.     return result

  13. print(Dec2Bin(62))
复制代码
最佳答案
2018-3-26 18:05:47
  1. def Dec2Bin(dec): #定义了一个函数,功能是将10进制转换为2进制数
  2.     temp = []   #定义了一个空列表,可以认为是堆栈的效果,
  3.                 #不理解堆栈的话,就认为他是一个中间临时存储数据的列表
  4.     result = ''  #定义了一个空字符串,用来存放最终转换后的2进制数
  5.    
  6.     while dec:  #dec是你传进来的那个值      
  7. #----函数的算法部分,也就是你如何实现将10进制转换为2进制的部分-----------------
  8.         quo = dec % 2     #quo 用来存储dec除以2后的余数
  9.         dec = dec // 2    #dec进行地板除,也就是类似于7//2=3这样,
  10.         temp.append(quo)  #把每一次除以2的余数存进temp列表中

  11.     while temp:
  12.         result += str(temp.pop()) #将列表中的内容从后往前输出
  13. #----------------------------算法部分结束---------------------------------   
  14.     return result #将结果返回

  15. print(Dec2Bin(62)) #调用上面的函数,传给参数的值是62
  16. #最后打印输出的是十进制的62转换为2进制后的结果
复制代码


我给你写了注释,应该可以看明白了,关于10进制转2进制,如果算法看不懂,请参考下面的网址内容介绍
https://jingyan.baidu.com/article/597a0643614568312b5243c0.html

最佳答案

查看完整内容

我给你写了注释,应该可以看明白了,关于10进制转2进制,如果算法看不懂,请参考下面的网址内容介绍 https://jingyan.baidu.com/article/597a0643614568312b5243c0.html
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-26 18:05:47 | 显示全部楼层    本楼为最佳答案   
  1. def Dec2Bin(dec): #定义了一个函数,功能是将10进制转换为2进制数
  2.     temp = []   #定义了一个空列表,可以认为是堆栈的效果,
  3.                 #不理解堆栈的话,就认为他是一个中间临时存储数据的列表
  4.     result = ''  #定义了一个空字符串,用来存放最终转换后的2进制数
  5.    
  6.     while dec:  #dec是你传进来的那个值      
  7. #----函数的算法部分,也就是你如何实现将10进制转换为2进制的部分-----------------
  8.         quo = dec % 2     #quo 用来存储dec除以2后的余数
  9.         dec = dec // 2    #dec进行地板除,也就是类似于7//2=3这样,
  10.         temp.append(quo)  #把每一次除以2的余数存进temp列表中

  11.     while temp:
  12.         result += str(temp.pop()) #将列表中的内容从后往前输出
  13. #----------------------------算法部分结束---------------------------------   
  14.     return result #将结果返回

  15. print(Dec2Bin(62)) #调用上面的函数,传给参数的值是62
  16. #最后打印输出的是十进制的62转换为2进制后的结果
复制代码


我给你写了注释,应该可以看明白了,关于10进制转2进制,如果算法看不懂,请参考下面的网址内容介绍
https://jingyan.baidu.com/article/597a0643614568312b5243c0.html

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
drwyatt + 1 + 1

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-26 18:18:17 | 显示全部楼层
10进制转2进制,如果想看懂这个代码可以先去了解一下 10进制转2进制的方法(代码里面用的是列式计算那种),剩下的就是一个存储0和1的栈,所有操作就只有入栈和出栈

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
drwyatt + 1 + 1 + 1

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-26 19:18:03 | 显示全部楼层
百度搜索“辗转相除法”求二进制的方法,然后就能看懂了。
总的来说就是,不断除2取余

评分

参与人数 1荣誉 +5 鱼币 +1 贡献 +3 收起 理由
drwyatt + 5 + 1 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-26 19:42:51 | 显示全部楼层
其实那个result += str(temp.pop())也太难理解?
还不如直接倒过来,在直接输出

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
drwyatt + 1 + 1 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-27 16:18:12 | 显示全部楼层
Zmynx_2017 发表于 2018-3-26 18:05
我给你写了注释,应该可以看明白了,关于10进制转2进制,如果算法看不懂,请参考下面的网址内容介绍
h ...

感谢感谢,大神好厉害,看懂啦
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-27 16:44:56 | 显示全部楼层
Restar 发表于 2018-3-26 18:18
10进制转2进制,如果想看懂这个代码可以先去了解一下 10进制转2进制的方法(代码里面用的是列式计算那种) ...

谢谢您的回复哟
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-27 16:47:51 | 显示全部楼层
铁棍阿童木 发表于 2018-3-26 19:18
百度搜索“辗转相除法”求二进制的方法,然后就能看懂了。
总的来说就是,不断除2取余

感谢您的回复哟
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-27 16:48:29 | 显示全部楼层
2289001949 发表于 2018-3-26 19:42
其实那个result += str(temp.pop())也太难理解?
还不如直接倒过来,在直接输出

感谢您的回复哦
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-7-3 20:24:22 | 显示全部楼层
2289001949 发表于 2018-3-26 19:42
其实那个result += str(temp.pop())也太难理解?
还不如直接倒过来,在直接输出

同感!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-30 06:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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