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 写几个进制转换的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)