def find_0_index(num): # 找到所有0的序号
index_list = []
for i in range(1,len(num)):
if num[i] == '0':
index_list.append(i)
return index_list
def change_0_1(num,index_list): # 随机改变一个0为1
num_0 = '1' + num[1:]
num_change_list = [num,num_0]
if '0' in num:
for i in index_list:
change_num = num[:i] + '1' + num[(i+1):]
num_change_list.append(change_num)
return num_change_list
def max_length(num_change_list,nb): # 找到最长的1
max_num = 0
final_num = 0
for num in num_change_list:
max_list = num.split('0')
for i in max_list:
if len(i) > max_num:
max_num = len(i)
final_num = num
print("10进制【%d】改为二进制数字是【%s】" % (nb,bin(nb)[2:]))
print("最长的一串 1 有【%d】个,这个数字改变后是【%s】" % (max_num,final_num))
number = int(input("请输入一个数字:"))
num_to_2 = bin(number)[2:]
ind_list = find_0_index(num_to_2)
n_c_list = change_0_1(num_to_2,ind_list)
max_length(n_c_list,number)
|