|
发表于 2017-6-21 00:19:47
|
显示全部楼层
修改了一下 
- ##设置一个题目里面的62进制的列表
- def make_table():
- table = []
- for i in range(48,58):
- table.append(chr(i))
- for i in range(65,91):
- table.append(chr(i))
- for i in range(97,123):
- table.append(chr(i))
- return table
- ##判断高进制的字符串是哪一个,目的是:比较的时候以高进制的为主体
- def judge_high(rawData,newData):
- ##如果位数相同,那么最高位小的,便是高进制的
- if len(rawData) is len(newData):
- if rawData[0] > newData[0]:
- return (newData,rawData)
- else:
- return (newData,rawData)
- ##如果位数不相同,位数小的便是高进制的
- else:
- if len(rawData) > len(newData):
- return (newData,rawData)
- else:
- return (rawData,newData)
-
- ##判断高低进制字符串起始比较的进制大小
- def judge_system(highData,lessData):
- table = make_table()
- highMaxSys = table.index(max(highData))
- lessMaxSys = table.index(max(lessData))
- ##高进制字符串最大元素小于低进制字符串最大元素的时候
- if highMaxSys < lessMaxSys:
- highMaxSys = lessMaxSys + 1
- return (highMaxSys + 1,lessMaxSys + 1)
- ## 计算字符串转化到十进制是多少
- def compute(data,sys):
- table = make_table()
- temp = 0
- for i in range(len(data)):
- temp += table.index(data[i]) * pow(sys,len(data)-i-1)
- return temp
- ## 进行十进制的比较,相等的话返回进制数
- def compare(highData,lessData,highSys,lessSys):
- for i in range(highSys,63):
- for j in range(lessSys,i+1):
- if compute(highData,i) == compute(lessData,j):
- return (i,j)
-
- def Calc(rawdata,newdata):
- table = make_table()
- if rawdata is newdata: ##两字符串相同的情况
- return (table.index(max(rawdata))+1,table.index(max(rawdata))+1)
- else:
- highData,lessData = judge_high(rawdata,newdata)##判断谁是高进制字符串
- highSys,lessSys = judge_system(highData,lessData)##判断高低字符串最低比较进制
- ##若存在进制之间的转换,则返回对应进制数
- try:
- n,m = compare(highData,lessData,highSys,lessSys)
- except:
- return '无法进行转换'
-
- if highData == rawdata:
- return (n,m)
- else:
- return (m,n)
- Test = [('A', '11'),
- ('18', '18'),
- ('ABC', '41I'),
- ('3d8B', '254731'),
- ('FISHC', '18DCFB0'),
- ('python', 'B1687AEA1'),
- ('10110111010010010010101000101010', '11TIFA8BPMTL0'),
- ('10110111010010010010101000101010010101010101010010101001010100101101010101010010101001010100101010101010010101001010010101001010', '5Zr1zn3pm5znjGepqkPmDC')]
- for i in range(len(Test)):
- print(Calc(Test[i][0],Test[i][1]))
复制代码 |
评分
-
查看全部评分
|