python017讲作业十进制转换为二进制
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等于负数时直接飙到百分之二十多(多次验证)
请问大神这是什么原因 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))
甲鱼老师的 这我还是真不知道 小甲鱼的铁粉 发表于 2020-9-11 15:30
这我还是真不知道
直接把我干蒙了~ 描述
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))
输入负数时貌似死循环了 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))
运行的时候打印输出看一下就知道了 疾风怪盗 发表于 2020-9-11 15:39
运行的时候打印输出看一下就知道了
请问有什么办法能去掉结果中的中括号吗? 比如14我的方法运行结果为'' 有什么办法能让其变成'1110'吗#后面加点什么东西,类似小甲鱼的pop操作 十泉浩 发表于 2020-9-11 15:49
请问有什么办法能去掉结果中的中括号吗?
一种就像你写的,str()转为字符串,然后可以切片啊
return result
不过这种方法不建议,用在程序里的时候要特别注意
还有就是列表循环打印出来
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=' ') 我能想到的就只是pop再reserve一下,,,太麻烦了 emmm...我试了一下,正数和小数为什么返回none这个问题最佳答案已经说了,就是reverse()方法不返回值,所以你的temp2 = temp2.reverse()的右边是没有值的,也就是说给左边赋值了none,可以这么理解吧。而负数的话,我试了几个数,当x循环到-1时就会陷入死循环,x的值一直是-1跳不出循环,所以说这也可以解释你的cpu使用提高吧,而一直死循环你的bin1函数就没有返回值,所以就啥也没有吧,连none都没返回。当然我只试了几个负数,结论不一定具有普遍性。 小总结(以14为例)
0:结果为形式,我的方法即可(注意reserve的用法)
1:结果为1,1,1,0形式可以用切片(把前后两个中括号切掉)
2:结果为1110形式 可以用for i in result再 print(i,end='')
3:结果为'1110'形式用甲鱼老师的pop方法将列表转换为字符串,(必要时可以用reserve翻转一下列表) 宋立赢 发表于 2020-9-11 16:23
emmm...我试了一下,正数和小数为什么返回none这个问题最佳答案已经说了,就是reverse()方法不返回值,所以 ...
结论一样哦,谢谢! 疾风怪盗 发表于 2020-9-11 15:53
一种就像你写的,str()转为字符串,然后可以切片啊
不过这种方法不建议,用在程序里的时候要特别注意
...
谢谢大哥帮助!
页:
[1]