鱼C论坛

 找回密码
 立即注册
查看: 1443|回复: 13

[已解决]python017讲作业十进制转换为二进制

[复制链接]
发表于 2020-9-11 15:25:06 | 显示全部楼层 |阅读模式

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

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

x
def bin1(x):
    temp2 = []
    while x:
        temp1 = x % 2
        x = x // 2
        temp2.append(temp1)
    temp2 = temp2.reverse()
    result=str(temp2)
    return result
    

甲鱼老师 那个方法我看懂了
我觉得我写的这个好像差不多..
但是很有趣的是
当x=正数时(包括小数)  他都会返回None
而x=负数时(包括小数)  他不会返回任何东西                而且我的CPU使用一般不超过百分之五,x等于负数时直接飙到百分之二十多(多次验证)
请问大神这是什么原因
最佳答案
2020-9-11 15:38:28
描述
reverse() 函数用于反向列表中元素。

语法
reverse()方法语法:

list.reverse()
参数
NA。
返回值
该方法没有返回值,但是会对列表的元素进行反向排序。
def bin1(x):
    temp2 = []
    while x:
        temp1 = x % 2
        x = x // 2
        temp2.append(temp1)
    temp2.reverse()
    result = str(temp2)
    return result

print(bin1(14))

[1, 1, 1, 0]

输入负数时貌似死循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-11 15:25:43 | 显示全部楼层
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(62))
甲鱼老师的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-11 15:30:48 | 显示全部楼层
这我还是真不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-9-11 15:34:44 | 显示全部楼层

直接把我干蒙了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-11 15:38:28 | 显示全部楼层    本楼为最佳答案   
描述
reverse() 函数用于反向列表中元素。

语法
reverse()方法语法:

list.reverse()
参数
NA。
返回值
该方法没有返回值,但是会对列表的元素进行反向排序。
def bin1(x):
    temp2 = []
    while x:
        temp1 = x % 2
        x = x // 2
        temp2.append(temp1)
    temp2.reverse()
    result = str(temp2)
    return result

print(bin1(14))

[1, 1, 1, 0]

输入负数时貌似死循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-11 15:39:23 | 显示全部楼层
def bin1(x):
    temp2 = []
    while x:
        temp1 = x % 2
        print(temp1)
        x = x // 2
        print(x)
        temp2.append(temp1)
    temp2.reverse()
    result = str(temp2)
    return result

print(bin1(-14))
运行的时候打印输出看一下就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-11 15:49:12 | 显示全部楼层
疾风怪盗 发表于 2020-9-11 15:39
运行的时候打印输出看一下就知道了

请问有什么办法能去掉结果中的中括号吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-11 15:53:03 | 显示全部楼层
比如14  我的方法运行结果为'[1, 1, 1, 0]'   有什么办法能让其变成'1110'吗#后面加点什么东西,类似小甲鱼的pop操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-11 15:53:38 | 显示全部楼层
十泉浩 发表于 2020-9-11 15:49
请问有什么办法能去掉结果中的中括号吗?

一种就像你写的,str()转为字符串,然后可以切片啊
return result[1:-1]
不过这种方法不建议,用在程序里的时候要特别注意

还有就是列表循环打印出来
def bin1(x):
    temp2 = []
    while x:
        temp1 = x % 2
        x = x // 2
        temp2.append(temp1)
    temp2.reverse()
    return temp2

a=bin1(14)
for i in a:
    print(i,end=' ')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-11 15:53:44 | 显示全部楼层
我能想到的就只是pop再reserve一下,,,太麻烦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-11 16:23:25 | 显示全部楼层
emmm...我试了一下,正数和小数为什么返回none这个问题最佳答案已经说了,就是reverse()方法不返回值,所以你的temp2 = temp2.reverse()的右边是没有值的,也就是说给左边赋值了none,可以这么理解吧。而负数的话,我试了几个数,当x循环到-1时就会陷入死循环,x的值一直是-1跳不出循环,所以说这也可以解释你的cpu使用提高吧,而一直死循环你的bin1函数就没有返回值,所以就啥也没有吧,连none都没返回。当然我只试了几个负数,结论不一定具有普遍性。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-11 16:31:33 | 显示全部楼层
小总结(以14为例)
0:结果为[1,1,1,0]形式,我的方法即可(注意reserve的用法)
1:结果为1,1,1,0形式  可以用切片[1,-1](把前后两个中括号切掉)
2:结果为1110形式 可以用for i in result  再 print(i,end='')
3:结果为'1110'形式  用甲鱼老师的pop方法将列表转换为字符串,(必要时可以用reserve翻转一下列表)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-11 16:32:42 | 显示全部楼层
宋立赢 发表于 2020-9-11 16:23
emmm...我试了一下,正数和小数为什么返回none这个问题最佳答案已经说了,就是reverse()方法不返回值,所以 ...

结论一样哦,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-11 16:33:33 | 显示全部楼层
疾风怪盗 发表于 2020-9-11 15:53
一种就像你写的,str()转为字符串,然后可以切片啊

不过这种方法不建议,用在程序里的时候要特别注意
...

谢谢大哥帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 16:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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