小甲鱼的铁粉 发表于 2020-6-15 20:05:47

python将十进制转化为二进制

我的思路是把每次除以2得到的余数存放在list1中,最后用list1把值给result,但是报错了,应该是语法问题,大家帮我看看把{:10_297:}

Twilight6 发表于 2020-6-15 20:07:04



贴代码呗 ,发图片效果不如代码~~

报错是列表的索引超出范围了~

qiuyouzhi 发表于 2020-6-15 20:07:08

?不是list1吗?为什么变成list了?

小甲鱼的铁粉 发表于 2020-6-15 20:07:56

图片那里有问题,a=int(input())那里是没有换行的,应该是我不小心按到了,代码是
def mybin(x):
    result = 0
    i = 0
    list1=[]
    while x:
      list1 = x % 2
      x = x // 2
      i += 1
    for i in range(0,len(list1)-1,-1):
      result = result * 10 + list
    return result
a = int(input("请输入一个正整数,求它的二进制"))
print("它的二进制为%d" % mybin(a))
      

小甲鱼的铁粉 发表于 2020-6-15 20:09:03

Twilight6 发表于 2020-6-15 20:07
贴代码呗 ,发图片效果不如代码~~

报错是列表的索引超出范围了~

好的

Twilight6 发表于 2020-6-15 20:10:22

小甲鱼的铁粉 发表于 2020-6-15 20:09
好的




哈哈 你这..... result = 0 了 然后再拿去乘 任何数不是都为零拉

小甲鱼的铁粉 发表于 2020-6-15 20:12:07

Twilight6 发表于 2020-6-15 20:10
哈哈 你这..... result = 0 了 然后再拿去乘 任何数不是都为零拉

result = result * 10 + list
它是有+的,刚开始result*10是0,它加上list1就不是0了

Twilight6 发表于 2020-6-15 20:17:18

小甲鱼的铁粉 发表于 2020-6-15 20:12
它是有+的,刚开始result*10是0,它加上list1就不是0了


改成这样呗,你拿去乘的时候有的时候会少一位


def mybin(x):
    result = ''
    i = 0
    while x:
      result += str(x % 2)
      x = x // 2
      i += 1
    return result[::-1]


a = int(input("请输入一个正整数,求它的二进制"))
print("它的二进制为%s" % mybin(a))

小甲鱼的铁粉 发表于 2020-6-15 20:20:15

Twilight6 发表于 2020-6-15 20:17
改成这样呗,你拿去乘的时候有的时候会少一位

{:10_281:}
页: [1]
查看完整版本: python将十进制转化为二进制