В данной статье мы рассмотрим встроенные функции языка программирования Python по переводу чисел в различные системы счисления. А так же напишем универсальную функцию по переводу десятичных чисел в другие системы счисления.
Перевод чисел из десятичной системы счисления
Для перевода числа из десятичной системы счисления в двоичную можно воспользоваться оператором bin(). В качестве аргумента нужно передать значение в виде числа, а оператор вернет строку с двоичным числом. У результата также будет префикс 0b, указывающий на основание системы счисления.
number = 123 result = bin(number) print(result)
>’0b1111011′
Для перевода в восьмеричную систему счисления есть оператор oct(). Он также возвращает строку с восьмеричным числом и префиксом 0o.
number = 123 result = oct(number) print(result)
>’0o173′
При переводе в шестнадцатеричную систему счисления воспользуемся оператором hex(). Он вернет строку шестнадцатеричным числом и префиксом 0x
number = 123 result = hex(number) print(result)
>’0x7b’
Если же вам не нужен префикс у результата перевода, то всегда можно взять срез у полученной строки.
Как сделать СПАМ БОТА 5 строками python
print(bin(123)[2:]) print(oct(123)[2:]) print(hex(123)[2:])
>’1111011′ >’173′ >’7b’
Так же выводить числа в других системах счисления можно используя f-строки и формат вывода. Для этого в строке, через символ : указываем буквы b — для двоичной, o — для восьмеричной и x — для шестнадцатеричной системы счисления.
n = 1984 print(f’Двоичное: ‘) print(f’Восьмеричное: ‘) print(f’Шестнадцатеричное: ‘)
Двоичное: 11111000000 Восьмеричное: 3700 Шестнадцатеричное: 7c0
А теперь напишем универсальную функцию convert_to() по переводу чисел из десятичной системы счисления в систему счисления в любым основанием. Наша функция будет ограничена только наличием символов в переводимой системе счисления.
Данная функция принимает три аргумента, два из которых обязательные. Это десятичное целое число number и основание переводимой системы счисления base. Третий аргумент upper служит для указания регистра вывода строки переведенного числа. По умолчанию он установлен в значение False.
def convert_to(number, base, upper=False): digits = ‘0123456789abcdefghijklmnopqrstuvwxyz’ if base > len(digits): return None result = » while number > 0: result = digits[number % base] + result number //= base return result.upper() if upper else result
Во второй строке мы задаем переменную digits, содержащую набор символов цифр и букв английского языка. Она нам понадобится для составления символов переведенного числа на основании остатков.
В третьей строке мы проверяем основание переданной системы счисления на его длину. Если основание окажется больше, чем количество символов в нашей строке digits, то мы прекращаем выполнение функции через вызов оператора return и возвращаем None. Это такая своеобразная защита функции от неправильно переданных аргументов. Если мы попробуем перевести число в большую систему счисления по основанию, чем у нас есть символов для его записи, то мы его не сможем записать.
1000-7 на пайтоне #гуль #пайтон #python #программирование #1000-7
Дальше заведем переменную result для хранения результата работы функции и зададим ей значение в виде пустой строки. Теперь с помощью цикла с условием будем находить остаток от деления числа number на основание base, а также уменьшать number в base раз используя целочисленное деление.
Остаток от деления числа на основание переводимой системы счисления мы будем использовать как индекс для получения символа в строке digits и добавлять его к результату result. Добавлять это значение следует слева, т.к. самый первый остаток является самым правым разрядом. Цикл выполняется до тех пор, пока исходное значение переменной number больше нуля.
После завершения цикла мы вернем результат через вызов return. Для этого воспользуемся тернарным оператором и проверим наш третий аргумент. Если он будет в значении True, то для строки result вызовем строкой метод .upper() который заменит все прописные символы английского языка на строчные. Иначе, вернем результат как есть.
А теперь проверим работу нашей функции. Для этого попробуем перевести числа в 2ю, 8ю, 16ю, 32ю и 64ю системы счисления. Для перевода в 32ю систему счисления мы укажем третий необязательный аргумент upper и зададим ему значение True.
print(convert_to(123, 2)) print(convert_to(123, 8)) print(convert_to(123, 16)) print(convert_to(123, 32, upper=True)) print(convert_to(123, 64))
>’1111011′ >’173′ >’7b’ >’3R’ >None
Перевод чисел в десятичную систему счисления
Для обратного перевода в десятичную систему счисления мы будем использовать оператор int(). Для этого передадим ему два аргумента, первый — это строка с числом в какой-то системе счисления, а второй — это основание системы счисления самого числа. По умолчанию для этого необязательного аргумента стоит значение равное 10.
В качестве самого числа нужно обязательно передать строку. Строка может содержать или само число или число с префиксом системы счисления.
Для перевода из двоичной системы счисления:
number = ‘11001’ result = int(number, 2) print(result)
number = ‘0b11001’ result = int(number, 2) print(result)
Для перевода из восьмеричной системы счисления:
Источник: barzunov.ru
Как заполнить список длиной N числами от 1 до N?
Как можно сделать, что бы список заполнялся от 1 до N числа. К примеру, я ввожу число 10, и нужно, чтобы ответ вывелся так 1 2 3 4 5 6 7 8 9 10.
Отслеживать
13.6k 12 12 золотых знаков 43 43 серебряных знака 72 72 бронзовых знака
задан 9 окт 2018 в 10:44
MISHAEL OVECHKIN MISHAEL OVECHKIN
11 1 1 золотой знак 2 2 серебряных знака 8 8 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Для формирования списка нужного размера можно использовать функцию range
N = int(input(«Введите размер списка: «)) spam = list(range(1, N+1)) print(spam) > Введите размер списка: 10 > [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Отслеживать
ответ дан 9 окт 2018 в 10:49
Alexshev92 Alexshev92
3,125 6 6 золотых знаков 16 16 серебряных знаков 33 33 бронзовых знака
9 окт 2018 в 10:58
В python-2.x достаточно следующего кода:
N = 3 print range(1, N + 1) # [1, 2, 3]
N = 3 print » «.join(map(str, range(1, N + 1))) # 1 2 3
В python-3.x схема работы range изменена, напрямую возвращает класс, поэтому чтобы вывести список принудительно проводим через list :
print(list(range(1, N+1))) # [1, 2, 3] print(» «.join(map(str, range(1, N+1)))) # 1 2 3
Источник: ru.stackoverflow.com
Решение модуля 7.5 из курса «Поколение python: курс для начинающих»
Полное решение модуля (урока) 7.5 Цикл while: обработка цифр числа на питоне + ответы.
Что покажет приведенный ниже фрагмент кода?
num = 12345
product = 1
while num != 0:
last_digit = num % 10
product = product * last_digit
num = num // 10
print(product)
Что покажет приведенный ниже фрагмент кода?
num = 123456789
total = 0
while num != 0:
last_digit = num % 10
if last_digit > 4:
total += 1
num = num // 10
print(total)
Обратный порядок 1
Дано натуральное число. Напишите программу, которая выводит его цифры в столбик в обратном порядке.
Формат входных данных
На вход программе подается одно натуральное число.Формат выходных данных
Программа должна вывести цифры введенного числа в столбик в обратном порядке.
n = int(input()) while n: # False = 0 , True = все что не 0 i = n % 10 # получить последнюю цифру n = n // 10 # удалить последнюю цифру из числа print(i)
Обратный порядок 2
Дано натуральное число. Напишите программу, которая меняет порядок цифр числа на обратный.
Формат входных данных
На вход программе подается одно натуральное число.Формат выходных данных
Программа должна вывести число записанное в обратном порядке.
n = int(input()) while n != 0: # еще один вариант проверки пока n не равен 0 цикл выполняется s = n % 10 # получаем последнюю цифру print(s, end=») # выводим на экран послед. цифру с пустым параметром end что бы не было перевода строки n = n // 10 # удаляем последнюю цифру из числа
max и min
Дано натуральное число n, , (n ge 10)n,(n≥10). Напишите программу, которая определяет его максимальную и минимальную цифры.
Формат входных данных
На вход программе подается одно натуральное число.Формат выходных данных
Программа должна вывести максимальную и минимальную цифры введенного числа (с поясняющей надписью).
n = int(input()) maxx = 0 # в максимум берем минимальное число minn = 9 # в минимум берем максимальное число while n != 0: # пока n не равна 0 выполняем цикл if n % 10 > maxx: # получаем последнюю цифру и сравниваем с максимальным maxx = n % 10 # если последняя цифра больше то перезаписываем максимальное число if n % 10 < minn: # получаем последнюю цифру и сравниваем с минимальным minn = n % 10 # если последняя цифра меньше то перезаписываем минимальное число n = n // 10 # убираем последнюю цифру print(‘Максимальная цифра равна’, maxx) print(‘Минимальная цифра равна’, minn)
Все вместе
Дано натуральное число. Напишите программу, которая вычисляет:
сумму его цифр;
количество цифр в нем;
произведение его цифр;
среднее арифметическое его цифр;
его первую цифру;
сумму его первой и последней цифры.Формат входных данных
На вход программе подается одно натуральное число.Формат выходных данных
Программа должна вывести значения указанных величин в указанном порядке.
inputn = int(input()) n = inputn # это наше число, неизменное total = 0 # сумма чисел product = 1 # произведение чисел count = 0 # количество чисел while inputn != 0: # цикл пока inputn не равен 0 total += inputn % 10 # считаем суму чисел product *= inputn % 10 # считаем произведение чисел count += 1 # считаем количество чисел inputn //= 10 # откидывает последнее число print(total) # сумма чисел print(count) # количество чисел print(product) # произведение чисел print(total/count) # среднее арифмитическое всех чисел print(n//10 ** (count-1)) # первое число print(n//10 ** (count-1) + n%10) # произведение первого и последнего чисел
Вторая цифра
Дано натуральное число n(n > 9). Напишите программу, которая определяет его вторую (с начала) цифру.
Формат входных данных
На вход программе подается одно натуральное число, состоящее как минимум из двух цифр.Формат выходных данных
Программа должна вывести его вторую (с начала) цифру.
n = int(input()) second = 0 # переменная для последней цифры while n > 9: # пока n > 9 выполняем цикл second = n % 10 # находим и в переменную перезаписываем последнию цифру n = n // 10 # убираем последнюю цифру print(second)
Одинаковые цифры
Дано натуральное число. Напишите программу, которая определяет, состоит ли указанное число из одинаковых цифр.
Формат входных данных
На вход программе подается одно натуральное число.Формат выходных данных
Программа должна вывести «YES» если число состоит из одинаковых цифр и «NO» в противном случае.
num = int(input()) # ввод числа flag = True # флаг считаем что все цифры равны while num > 9: # пока число 2значное выполняем цикл last = num % 10 # вычисляем последнюю цифру num = num // 10 # удаляем последнюю цифру и запускаем цикл сначала sec = num % 10 # вычисляем предпоследнюю цифру if last != sec: # условие, если последняя и предпоследняя flag = False # цифры не равны, меняем флаг if flag: # если флаг true print(‘YES’) # значит цифры равны else: print(‘NO’) # иначе различны
Упорядоченные цифры ?️
Дано натуральное число. Напишите программу, которая определяет, является ли последовательность его цифр при просмотре справа налево упорядоченной по неубыванию.
Формат входных данных
На вход программе подается одно натуральное число.Формат выходных данных
Программа должна вывести «YES» если последовательность его цифр при просмотре справа налево является упорядоченной по неубыванию и «NO» в противном случае.
# Эту задачу решил иначе чем предыдущую что бы показать как еще можно num = int(input()) teg = ‘YES’ # используем тег и считаем что последовательность упорядочена a = num % 10 # находим послееднюю цифру числа while num: # запускаем цикл if a > num % 10: # условие если предыдущая цифра больше последующей teg = ‘NO’ # то присваиваем тег NO, и уже нет смысла записывать в a последнию цифру else: # иначе a = num % 10 # присваиваем последнюю цифру — переменной num //= 10 # удаляем последнюю цифру числа print(teg)
Источник: zazloo.ru