python十进制转二进制代码(不用内置函数,使用if,else for,in,while)

python十进制转二进制代码(不用内置函数,使用if,else for,in,while),第1张

n = int(input('请输入要转换进制的数值:'))

b = []

while True: # 一直循环,商为0时利用break退出循环

s = n // 2 # 商

y = n % 2 # 余数

b = b + [y] # 每一个余数存储到b中

print b

if s == 0:

break # 余数为0时结束循环

n = s

breverse() # 使b中的元素反向排列

b = [ str(i) for i in b ]

b = ['0b'] + b

print ('该数字转换为二进制后是:')

print ''join(b)

从二进制转换为十进制有几种方式

第一种是在二进制数前加上0b,显示时会自动转换为十进制,注意这并不是字符串

x = 0b1010

print(x)

如果是字符串可以利用eval求值

x = eval('0b1010')

第二种是利用int函数,字符串可以以0b为前缀,也可以不使用

int('1010',base=2)

int('0b1010',2)

函数会将输入base进制的字符串转换为十进制

只回答第一题

b=[0]16

c=[0]8

e=[0]4

d=65536

while d>65535:

d=int(input("Please input a decimal number<65536: "))

p=d

m=d

for i in range(0,16,1):

b[15-i]=d%2

d=d//2

for i in range(0,8,1):

c[7-i]=p%8

p=p//8

for i in range(0,4,1):

e[3-i]=m%16

m=m//16

if e[3-i]<=9:

e[3-i]=e[3-i]

else:

if e[3-i]==10:

e[3-i]='a'

else:

if e[3-i]==11:

e[3-i]='b'

else:

if e[3-i]==12:

e[3-i]='c'

else:

if e[3-i]==13:

e[3-i]='d'

else:

if e[3-i]==14:

e[3-i]='e'

else:

if e[3-i]==15:

e[3-i]='f'

print(b,c,e)

a = input('请输入一个八进制数:')

sum = 0

for i in range(len(a)-1,-1,-1):

sum += int(a[0])(8i)

print('%d 的十进制为:%d' % (int(a), sum))

二进制数转换成十进制数:二进制数从右向左每位数乘以2的次方(从0开始,从右向左依次+1),然后相加求和即可

如:0101转成十进制为:120+021+122+023=1+0+4+0=5

算法实现:

#coding=utf-8

b=raw_input("请输入一个二进制数:"decode("utf-8")encode("gbk"))

sum=0

for i in range(len(b)):

sum+=int(b[len(b)-1-i])pow(2,i)

print u"转换成十进制数是:",sum

二进制数转换成十进制数

由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 例1105 把二进制数11011转换成十进制数。

十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。

百度百科-十进制

从二进制转换为十进制有几种方式

第一种是在二进制数前加上0b,显示时会自动转换为十进制,注意这并不是字符串

x

=

0b1010print(x)

如果是字符串可以利用eval求值

x

=

eval('0b1010')

第二种是利用int函数,字符串可以以0b为前缀,也可以不使用

int('1010',base=2)int('0b1010',2)

函数会将输入base进制的字符串转换为十进制

我用了一个自定义函数listpop,是为了减少代码量方便阅读,如果要完全切合题义的话,你可以自己把函数拆开内联到merge函数中去。

L1 = [1,4,5]

L2 = [2,7]

def listpop(l):

try:

return lpop(0)

except:

return None

def merge(l1, l2):

x = []

cmpCount = 0

n1 = listpop(l1)

n2 = listpop(l2)

while n1 != None or n2 != None:

if n1 != None:

if n1 < n2 or n2 == None:

cmpCount += 1

xappend(n1)

n1 = listpop(l1)

if n2 != None:

if n2 < n1 or n1 == None:

cmpCount += 1

xappend(n2)

n2 = listpop(l2)

print 'cmp count:%s'%cmpCount

return x

print merge(L1, L2)

如果可以用sort函数的话这题就简单了

def merge_sort(l1, l2):

x = l1 + l2

xsort()

return x

#!/usr/bin/env python

# coding: utf-8

#

# filename: binpy

# author: Tim Wang

# date: Dec, 2013

def iconvert(num):

    b = []

    while num:

        num, bi, = num / 2, num % 2

        bappend(bi)

    return '0b'+''join(map(str, b[::-1]))

def jconvert(num, bl = 10):

    def _iterbs(num):

        while num:

            num = 2

            if num >= 1:

                yield 1

                num -= 1

            else:

                yield 0

    bi = []

    for b in _iterbs(num):

        biappend(b)

        if len(bi)>= bl:

            break

    return ''join(map(str, bi))

def convert(num):

    i, j = int(num), num-int(num)

    I = '' if not i else iconvert(i)

    J = '' if not j else ""+jconvert(j)

    return I+J

if __name__ == "__main__":

    import random

    num = randomrandint(1,32553)+randomrandom()

    print num, convert(num)

以上就是关于python十进制转二进制代码(不用内置函数,使用if,else for,in,while)全部的内容,包括:python十进制转二进制代码(不用内置函数,使用if,else for,in,while)、用python编个十进制转换为六进制的程序!!在线等、用Python 3.1.3 写几个进制转换的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10212092.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存