|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
遇到难题了。。。求帮忙
这个的要求就是先把输入的十进制数变为二进制, 然后根据规则将其转换,起规则是:二进制数中遇到两个1或0 ,则取1个(即1100就变为10)
遇到单独的0则分开(即11011变为[1 , 1]), 最后再将计算后的二进制数变为十进制。
import sys
def encode(*integers):
return int('0'.join(''.join(c + c for c in bin(i)[2: ]) for i in integers), 2)
def decode(integer):
#代码
integer = input('Input a strictly positive integer: ')
if integer[0] == '0' or not integer.isdigit():
print('Incorrect input, giving up!')
sys.exit()
integer = int(integer)
decoding = decode(integer)
if decoding is None:
print('Incorrect encoding!')
else:
print('This encodes: ', decoding)
print('Checking: ')
print(' In base 2, {} is {}'.format(integer, bin(integer)[2: ]))
print(' In base 2, {} is: [{}]'.format(decoding, ', '.join(bin(i)[2: ] for i in decoding)))
新手来一个 - bi=bin(int(input('')))
- copy_bi=bi[2:]
- bi=bi[2:]
- last=None
- for i in range(len(bi)):
- if last==None:
- last=bi[i]
- else:
- if last==bi[i]:
- last=None
- copy_bi=copy_bi[:i]+' '+copy_bi[i+1:]
- else:
- if bi[i]=='0':
- last=None
- copy_bi=copy_bi[:i]+'/'+copy_bi[i+1:]
- else:
- last=None
- copy_bi=copy_bi[:i-1]+'/'+copy_bi[i:]
- copy_bi=copy_bi.split('/')
- for i in copy_bi:
- iii=(i.strip()).split()
- a=''
- for ii in iii:
- a=a+i
- print (a)
复制代码
|
|