Счетчик просмотров57

str ↔ int и ведущие нули

Оглавление
Зачем переключаться туда-сюдаВедущие нули теряются Как вернуть ведущие нул Пример с ЕГЭ: задание 5 — запись фиксированной длиныПодводный камень: строки сравниваются по алфавитуЧто int умеет и чего не умеет

 

PYTHON-КОД
1
2
3
4
5

Одна и та же запись + делает совершенно разные вещи. Поэтому первый вопрос при любой ошибке — «а что у меня сейчас: строка или число?». Проверяется мгновенно: print(type(x)).

Зачем переключаться туда-сюда

Что нужно сделатьЧерез что удобнее
посмотреть цифры по однойстрока: for c in str(n)
приписать разряды справастрока: s + "11"
посчитать количество цифрстрока: len(str(n))
сравнить по величинечисло: int(a) > int(b)
посчитать сумму, произведениечисло: int(c) для каждой цифры

Ведущие нули теряются 

PYTHON-КОД
1
2

Число не хранит ведущие нули: 007 и 7 — это одно и то же значение. Если по условию нужна запись фиксированной длины, нули придётся дописать вручную.

Как вернуть ведущие нул 

PYTHON-КОД
1
2
3
4

zfill(k) дополняет строку нулями слева до длины k. Формат f"{n:03d}" делает то же, но умеет сразу переводить в двоичную (b), восьмеричную (o) и шестнадцатеричную (x) запись.

Баннер статьи

Пример с ЕГЭ: задание 5 — запись фиксированной длины

Формулировка вроде: «Двоичная запись числа дополняется слева нулями до восьми разрядов…». Здесь без выравнивания не обойтись — и обычный bin не подойдёт, потому что нулей слева он не ставит

PYTHON-КОД
1
2
3
4
5

 

Главное здесь — то, что запись остаётся строкой, пока идут манипуляции с разрядами, и превращается в число только на финальном int(s, 2).

Подводный камень: строки сравниваются по алфавиту

PYTHON-КОД
1
2
3
4

 

Числа, прочитанные из файла, — это строки. Пока не сделан int, любая сортировка и любой max работают по алфавиту, а не по величине.

Что int умеет и чего не умеет

ВызовРезультат
int("42")42
int("  42  ")42 — пробелы по краям отбрасываются
int("-42")-42
int("42.0")ValueError — точку не понимает
int("4 2")ValueError — пробел внутри
int(42.9)42 — дробная часть отбрасывается

Для строки с точкой сначала нужен float: int(float("42.0")).

Оцените статью

Другие статьи по предмету

Другие статьи не найдены