Как отобразить последние 2 цифры из числа в Python
Я пытаюсь взять показания давления воздуха и построить их с последними 2-значными цифрами. Тем не менее, когда я использую по модулю:
--> x = 1004
--> x % 100
--> 4
Это просто генерирует 4. Как я могу отобразить это, чтобы показать 04 вместо 4?
Спасибо!
8 ответов
Если вам это нужно как 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/
Нет по модулю, нет 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 в строки фиксированной длины