这应该是您问题的答案的上半部分。您能弄清楚如何转换为基数吗?
# Create a symbol-to-value table.SY2VA = {'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, 'G': 16, 'H': 17, 'I': 18, 'J': 19, 'K': 20, 'L': 21, 'M': 22, 'N': 23, 'O': 24, 'P': 25, 'Q': 26, 'R': 27, 'S': 28, 'T': 29, 'U': 30, 'V': 31, 'W': 32, 'X': 33, 'Y': 34, 'Z': 35, 'a': 36, 'b': 37, 'c': 38, 'd': 39, 'e': 40, 'f': 41, 'g': 42, 'h': 43, 'i': 44, 'j': 45, 'k': 46, 'l': 47, 'm': 48, 'n': 49, 'o': 50, 'p': 51, 'q': 52, 'r': 53, 's': 54, 't': 55, 'u': 56, 'v': 57, 'w': 58, 'x': 59, 'y': 60, 'z': 61, '!': 62, '"': 63, '#': 64, '$': 65, '%': 66, '&': 67, "'": 68, '(': 69, ')': 70, '*': 71, '+': 72, ',': 73, '-': 74, '.': 75, '/': 76, ':': 77, ';': 78, '<': 79, '=': 80, '>': 81, '?': 82, '@': 83, '[': 84, '\': 85, ']': 86, '^': 87, '_': 88, '`': 89, '{': 90, '|': 91, '}': 92, '~': 93}# Take a string and base to convert to.# Allocate space to store your number.# For each character in your string:# Ensure character is in your table.# Find the value of your character.# Ensure value is within your base.# Self-multiply your number with the base.# Self-add your number with the digit's value.# Return the number.def str2int(string, base): integer = 0 for character in string: assert character in SY2VA, 'Found unknown character!' value = SY2VA[character] assert value < base, 'Found digit outside base!' integer *= base integer += value return integer
这是解决方案的后半部分。通过使用这两个函数,转换基数非常容易。
# Create a value-to-symbol table.VA2SY = dict(map(reversed, SY2VA.items()))# Take a integer and base to convert to.# Create an array to store the digits in.# While the integer is not zero:# Divide the integer by the base to:# (1) Find the "last" digit in your number (value).# (2) Store remaining number not "chopped" (integer).# Save the digit in your storage array.# Return your joined digits after putting them in the right order.def int2str(integer, base): array = [] while integer: integer, value = divmod(integer, base) array.append(VA2SY[value]) return ''.join(reversed(array))
将所有内容放在一起后,您应该结束下面的程序。请花点时间弄清楚!
innitvar = raw_input("Please enter a number: ")basevar = int(raw_input("Please enter the base that your number is in: "))convertvar = int(raw_input("Please enter the base that you would like to convert to: "))# Create a symbol-to-value table.SY2VA = {'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, 'G': 16, 'H': 17, 'I': 18, 'J': 19, 'K': 20, 'L': 21, 'M': 22, 'N': 23, 'O': 24, 'P': 25, 'Q': 26, 'R': 27, 'S': 28, 'T': 29, 'U': 30, 'V': 31, 'W': 32, 'X': 33, 'Y': 34, 'Z': 35, 'a': 36, 'b': 37, 'c': 38, 'd': 39, 'e': 40, 'f': 41, 'g': 42, 'h': 43, 'i': 44, 'j': 45, 'k': 46, 'l': 47, 'm': 48, 'n': 49, 'o': 50, 'p': 51, 'q': 52, 'r': 53, 's': 54, 't': 55, 'u': 56, 'v': 57, 'w': 58, 'x': 59, 'y': 60, 'z': 61, '!': 62, '"': 63, '#': 64, '$': 65, '%': 66, '&': 67, "'": 68, '(': 69, ')': 70, '*': 71, '+': 72, ',': 73, '-': 74, '.': 75, '/': 76, ':': 77, ';': 78, '<': 79, '=': 80, '>': 81, '?': 82, '@': 83, '[': 84, '\': 85, ']': 86, '^': 87, '_': 88, '`': 89, '{': 90, '|': 91, '}': 92, '~': 93}# Take a string and base to convert to.# Allocate space to store your number.# For each character in your string:# Ensure character is in your table.# Find the value of your character.# Ensure value is within your base.# Self-multiply your number with the base.# Self-add your number with the digit's value.# Return the number.integer = 0for character in innitvar: assert character in SY2VA, 'Found unknown character!' value = SY2VA[character] assert value < basevar, 'Found digit outside base!' integer *= basevar integer += value# Create a value-to-symbol table.VA2SY = dict(map(reversed, SY2VA.items()))# Take a integer and base to convert to.# Create an array to store the digits in.# While the integer is not zero:# Divide the integer by the base to:# (1) Find the "last" digit in your number (value).# (2) Store remaining number not "chopped" (integer).# Save the digit in your storage array.# Return your joined digits after putting them in the right order.array = []while integer: integer, value = divmod(integer, convertvar) array.append(VA2SY[value])answer = ''.join(reversed(array))# Display the results of the calculations.print answer
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)