Если вы хотите преобразовать целое число в восьмеричное число, удобен метод Python oct().
Что такое функция oct() в Python?
Метод Python oct() возвращает восьмеричное представление заданного числа. Он принимает целое число и возвращает его восьмеричное представление. Если данное число является целым числом, оно должно реализовать метод __index__() для возврата целого числа.
Восьмеричные строки в Python имеют префикс 0o.
Синтаксис метода Python oct() следующий.
|
1 |
oct(x) |
Эта функция имеет только один параметр x, который является целым числом, и он может быть в двоичной, шестнадцатеричной или десятичной форме. Если значение x отличается от целочисленного типа, программа вернет TypeError.
Рассмотрим, что делает функция oct() в Python и как возвращает восьмеричную строку из заданного целого числа.
Как oct() работает в Python
См. следующий пример кода.
|
1 2 3 4 5 6 7 8 9 10 11 |
# app.py # When input is a decimal number print("Octal representation is: ", oct(130)) # When input is in binary format print("Octal representation is: ", oct(0b1111)) # When an input is in hexadecimal format print("Octal representation is: ", oct(0XAC)) |
Вывод:
|
1 2 3 4 5 |
➜ pyt python3 app.py Octal representation is: 0o202 Octal representation is: 0o17 Octal representation is: 0o254 ➜ pyt |
В приведенной выше программе мы видим, что мы преобразовали десятичный, двоичный и шестнадцатеричный типы ввода в восьмеричный формат.
Каждый раз мы получали одну строку, начинающуюся с 0o, что указывает на восьмеричный формат числа. У нас есть 0b для двоичных чисел и 0x или 0X для шестнадцатеричных чисел.
Когда данный ввод не является целым числом
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
# app.py class Octal: x = 115 def __init__(self): return self.x octal = Octal() print("The octal value is: ", oct(octal)) |
Вывод:
|
1 2 3 4 5 6 |
➜ pyt python3 app.py Traceback(most recent call last): File "app.py", line 8, in <module> octal = Octal() TypeError: __init__() should return None, not 'int' ➜ pyt |
Здесь, в этом примере, поскольку данный ввод не является вводом целочисленного типа, компилятор выдает нам ошибку времени выполнения (TypeError).
Функция oct() с пользовательскими объектами
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# app.py class Student: age = 18 def __index__(self): return self.age def __int__(self): return self.age stud = Student() print('The oct is:', oct(stud)) |
Вывод:
|
1 2 3 |
➜ pyt python3 app.py The oct is: 0o22 ➜ pyt |
В этом примере мы использовали функцию oct() с пользовательским объектом в качестве аргумента. В этом объекте мы реализуем функцию __index__().
