|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 MaxFireGun 于 2022-9-2 22:21 编辑
- num_dict = {0:'0', 1:'1', 2:'2', 3:'3', 4:'4', 5:'5', 6:'6', 7:'7', 8:'8', 9:'9', 10:'A', 11:'B', 12:'C', 13:'D', 14:'E', 15:'F'}
- symbol_dict = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, 'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15}
- ### Number Conversion Program####
- def Dec_to_Y(num, M, N):
- i = 0
- new_num = 0
- new_str = ''
-
- while True:
- if num < N:
- new_num += num * (10 ** i)
- new_str = num_dict[num] + new_str
- # return (new_num, new_str)
- return (new_str)
-
- else:
- A = num % N
- new_num += A * 10 ** i
- new_str = num_dict[A] + new_str
- num = num // N
- i += 1
- def X_to_Dec(num, M, N):
- num = str(num)
- temp = 0
- num_len = len(num)
- j = 1
- for i in num:
- temp += symbol_dict[i] * (M ** (num_len - j))
- j += 1
- return (temp, M, N)
-
- def X_to_Y(num, M, N):
- a = X_to_Dec(num, M, N)
- b = Dec_to_Y(*a)
- return b
-
- ##########################################
- ###### number input and number check #######
- def num_input():
- num, M, N = map(lambda x: int(x), input('Please input *ur number*, *initial number type* and *final number type*, and the data should be sperated by comma:').split(','))
- a = num, M, N
- num_check(*a)
- return a
- def num_check(num, M, N):
- try:
- if M == 2:
- for i in str(num):
- if int(i) >= 2:
- raise ValueError
- else:
- pass
- elif M == 8:
- for i in str(num):
- if int(i) >= 8:
- raise ValueError
- else:
- pass
- else:
- pass
-
- except ValueError:
- print('The number is not in right format')
- num_input()
-
- ##############################################
- a = num_input()
- result = X_to_Y(*a)
- print('The final number is:' + result)
复制代码
*代码说明:
1.程序可以实现数字在2,8,10,16进制之间的任意转换。
2.原理说明:所有初始进制都转换成10进制,最后转换到目标进制。
3.内容说明:
a. 函数num_input为输入函数,
b. 函数num_check为检查输入的number的格式是否正确,比如二进制里输入2001或者8进制里输入9001就会提示错误,并要求重新输入。
c. 先利用X_to_Dec函数,将任意进制的数字转换为十进制。
d.然后利用Dec_to_Y函数,将任意进制的数字转换成目标进制。
4.X_to_Y将X_to_Dec和Dec_to_Y打包在一起。
Beer!Cheers! |
|