Объяснение расширенного Python форматирования строки - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь понять, как этот ответ на Code Golf работает, превращая целые числа в французские номерные знаки со следующим кодом:

lambda n:f"%c%c-{n%1000:03}-%c%c"%(*(65+n//1000//26**i%26for i in[3,2,1,0]),)

Я понимаю '%c' с помощью 65 + n на % 26 числе для получения букв, и я понимаю % 1000 : 03 для получения 3-0 набранных чисел до 999.Однако я не могу найти ничего о следующем:

  • использование двух косых черт здесь
  • эффект скобок { } в строке

Пояснения будут высоко оценены - спасибо!

Ответы [ 2 ]

2 голосов
/ 24 сентября 2019

Двойная косая черта (//) является целочисленным делением.Назад в Python2 / было неоднозначным.Это означало разные вещи, в зависимости от типов с двух сторон.Это вызвало значительную путаницу, поэтому в Python3 оно было разделено на / и //, где / - это всегда стандартное деление, если вы запустите 5/3, оно всегда будет 1.66 ..., неважноесли 5 и 3 - целые числа или числа с плавающей запятой.Между тем // - это всегда целочисленное деление, которое делит число на несколько этажей.(поэтому 3.4 // 1.2 - это 2)

f'...{expression}...' - это так называемая f-строка.Он берет значение в скобках {} и форматирует его на месте.Это похоже '...{}...'.format(expression).Это сложно, потому что в примере используются как строки f, так и форматирование%.

2 голосов
/ 24 сентября 2019

// для целочисленного деления (оно содержит только целую часть результата операции деления, аналогично int(n/m)).

Пример:

>>> n, m = 10, 7
>>> n / m
1.4285714285714286
>>> n // m
1

The {} в f-строках используется для вычисления выражения внутри самой строки.

Пример:

>>> x = 5
>>> print(f"x^2 = {x**2}")
x^2 = 25
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...