Python根据用户输入的2进制字符串转8进制

Python根据用户输入的2进制字符串转8进制

问题:

从键盘输入一个由 1 和 0 组成的二进制字符串 s,转换为八进制数输出显示在屏幕上。例如输入‘1100’,输出‘14’

实现1:

# 请输入一个由1和0组成的二进制数字串
#基本思路:2进制先转10进制,再由10进制转8进制。
#‘1100’ = 2^3+2^2
#只有1是有效位,2^i由i所在位置决定
#把字符串逆序,以配合range的范围,不影响结果。
#10进制转8进制,用format
s = input('请输入一个由1和0组成的二进制数字串:')
s1 = s[::-1]
sum = 0
for i in range(len(s)):
    if eval(s1[i]) == 1:
        sum += 2**i
print('{:o}'.format(sum))

实现2:

#这个实现想法比较奇葩,通过左移字符串,字符串逐个取出并处理。
s = input() # 请输入一个由1和0组成的二进制数字串
d = 0
while s:
    d = d*2 + (ord(s[0]) -ord('0'))
    s = s[1:]
print("转换成八进制数是:{:o}".format(d))

你可能感兴趣的:(Python)