Вывод числа в разных системах счисления
Нужно написать программу (Python), которая получает из первого аргумента командной строки целое число, а после печатает его в разных системах счисления
Результаты должны быть разделены между собой пробелами и идти в следующем порядке: десятичное число, двоичное число, восьмеричное число, шестнадцатеричное число.
Собственно, я написал:
import sys
number = sys.argv[1]
number = int(number)
print(number, bin(number), oct(number), hex(number))
но от сервера получаю ответ:
Параметры запуска:
> python digit.py 10
Ваш ответ:
10 0b1010 0o12 0xa
Правильный ответ:
10 1010 12 a
Объясните, пожалуйста, почему как правильный ответ принимается округление на 2 символа с начала и как это реализовать в ответе.
Ответы (2 шт):
Питон добавляет в начало числа специальные символы, показывающие систему счисления. Это удобно - в коде программы вы тоже можете использовать такие же префиксы и у вас не будет путаницы между константами в разных системах счисления - питон будет точно знать в какой системе вы написали число.
А вот в задаче эти символы не нужны. Можно их просто отрезать от получающейся строки, взяв от каждого такого представления срез [2:]
print(number, bin(number)[2:], oct(number)[2:], hex(number)[2:])
Есть еще такой вариант решения:
>>> number = 10
>>> # двоичная
>>> "{0:b}".format(number)
'1010'
>>> # восьмеричное
>>> "{0:o}".format(number)
'12'
>>> # шестнадцатеричное
>>> "{0:x}".format(number)
'a'
>>> # шестнадцатеричное заглавная буква
>>> "{0:X}".format(number)
'A'