Шаблон строки формата определен вне цикла? [дубликат]Python

Программы на Python
Ответить
Anonymous
 Шаблон строки формата определен вне цикла? [дубликат]

Сообщение Anonymous »

Я получаю странные результаты при определении строки формата вне цикла. Я хочу определить переменную, содержащую мою строку формата, например:

Код: Выделить всё

MYSTRING = f"filepath/{year}/{month}"
Если я определяю его вне цикла, я получаю повторяющееся одно и то же значение. Если я скопирую/вставлю эту строку в цикл, все будет работать нормально.
Этот код относится к 2023 году, как и ожидалось:

Код: Выделить всё

last_n_months = 12
months = date.today().year * 12 + date.today().month - 1 # Months since year 0 minus 1
tuples = [((months - i) // 12, (months - i) % 12 + 1) for i in range(last_n_months)]

for item in tuples:
year = str(item[0])
month = str(item[1])
# string used in directly with the format() function
print(f"xyz/Year={year}/Month={month}".format())

------------------------
xyz/Year=2024/Month=11
xyz/Year=2024/Month=10
xyz/Year=2024/Month=9
xyz/Year=2024/Month=8
xyz/Year=2024/Month=7
xyz/Year=2024/Month=6
xyz/Year=2024/Month=5
xyz/Year=2024/Month=4
xyz/Year=2024/Month=3
xyz/Year=2024/Month=2
xyz/Year=2024/Month=1
xyz/Year=2023/Month=12
Но этот повторяет один и тот же год/месяц для каждого:

Код: Выделить всё

# the format string
myformatstring = f"xyz/Year={year}/Month={month}"

last_n_months = 12
months = date.today().year * 12 + date.today().month - 1 # Months since year 0 minus 1
tuples = [((months - i) // 12, (months - i) % 12 + 1) for i in range(last_n_months)]

for item in tuples:
year = str(item[0])
month = str(item[1])
# use the format string variable from outside the loop
print(myformatstring.format())

------------------------
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
xyz/Year=2023/Month=12
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/792 ... de-of-loop
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»