Как отобразить последние 2 цифры из числа в Python

Я пытаюсь взять показания давления воздуха и построить их с последними 2-значными цифрами. Тем не менее, когда я использую по модулю:

--> x = 1004
--> x % 100
--> 4

Это просто генерирует 4. Как я могу отобразить это, чтобы показать 04 вместо 4?

Спасибо!

8 ответов

Попробуйте следующее:str(x%100).zfill(2)

Если вам это нужно как int или float, я не думаю, что это возможно. Если это только для целей отображения, преобразуйте его в строку и возьмите последние 2 символа:

x = 1004

>>> str(x)[-2:]
'04'

Если вы просто распечатываете число, оно выводится в формате по умолчанию. Для числа 2 это, очевидно, будет 2 не 02,

Если вы хотите указать пользовательский формат, вам нужно использовать некоторую форму форматирования строки. У Python есть несколько способов сделать это.

Формат строки

Тот же синтаксис строки формата используется format функция, str.format метод, Formatter подклассы и (с небольшими отличиями, которые здесь не актуальны) литералы f-строки.

Вы можете указать width из 2 плюс align из = (имеется в виду числовое выравнивание - заполнение ставится после любого + или же -) и fill из 0, Но есть также специальный ярлык, где размещение 0 прямо перед width означает выровненный по нулю заполнитель. Так:

>>> f"{x % 100:02}"
'02'
>>> format(x % 100, '02')
'02'
>>> '{:02}'.format(x % 100)
'02'

printf форматирование строки

Python имеет более старый, но все же иногда полезный способ форматирования 1, который более точно соответствует C и аналогичным языкам, вызывая printf стиль или % -formatting.

Вы указываете width из 2 и flag из 0, который указывает числовое заполнение нулями вместе с type из d чтобы указать, что вы хотите отформатировать число как десятичное число со знаком:

>>> "%02d" % (x % 100,)
'02'

В то время как % -форматирование не такое гибкое и мощное, как строки форматирования, иногда его проще понять (особенно если вы привыкли к C или другому языку), часто быстрее и работает с bytes так же как str,

Ручные строковые операции

Наконец, вы всегда можете преобразовать число в строку, а затем использовать строковые методы. Например, вы можете использовать zfill метод обнуления строки:

>>> str(x % 100).zfill(2)
'02'

... или вы можете использовать rjust метод, чтобы оправдать это '0' в качестве символа заполнения:

>>> str(x % 100).rjust(2, '0')
'02'

На самом деле, вместо вычисления остатка, вы можете просто преобразовать все это в строку, обрезать ее, а затем заполнить нулями:

>>> str(x)[-2:].zfill(2)

... хотя это, вероятно, не то, что вы хотите x это, скажем, -123 (ты получишь 23 вместо 77).


1. Фактически, он предоставляет два более старых решения, другое - строки шаблонов, но они не так полезны, как часто.

Вы также можете использовать форматирование строки.

ans = 1004 % 100
'{:03d}'.format(ans)

Более подробную информацию о форматировании строки можно найти здесь: https://pyformat.info/

Самый короткий способ сделать это '%02d' % (x % 100)

Нет по модулю, нет zfill.

      "{:02d}".format(12345)[-2:]
#> 45

      "{:02d}".format(0)[-2:]
#> 00

      "{:02d}".format(-9876)[-2:]
#> 76

      "{:02d}".format(-1)[-2:]
#> -1
x = 1004
x = x % 100

str(x)

y = len(x)

if y == 0:
   end

elif y == 2:
   print (x)

elif y == 1:
   print ('0'x)

else:
   x = str(x)[-2:]
   print (x)

В этом я преобразовал это в строку и вычислил длину значения как ' y '. Используя базовую структуру [ if elif else ], я вернул значения в вашем формате, но в виде строк.

Непонятно, для чего вы хотели использовать эти значения, потому что, если вы хотите, чтобы они представляли цифры, вам, вероятно, потребуется отредактировать настройки любого приложения вывода, которое вы используете. Альтернативное решение состоит в том, чтобы использовать значение для "x" как отличающееся от строки, чтобы числовое значение можно было использовать независимо от того, как оно отображается при печати. подмигивать

Ваш первый шаг к использованию оператора модуля для нахождения двухзначных цифр является правильным.

Затем вы захотите использовать строку формата для заполнения вашего результата при печати. Смотрите: Python формат Integer в строки фиксированной длины

Другие вопросы по тегам