Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 4, 2019 14:57:19

nGreg
Зарегистрирован: 2019-09-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор ветвления if

Подскажите, что я делаю не так. Сам я только перехожу на python из php.

pos = int(template)
if pos == 1:
template = re.sub(r“\bmonth\b”, “месяц”, template)
elif (pos >= 2 and pos <= 4) :
template = re.sub(r“\bmonth\b”, “месяца”, template)
elif (pos >= 5 and pos <= 12):
template = re.sub(r“\bmonth\b”, “месяцев”, template)
print(“<b>test here</b>”)

Если переменная pos в диапазоне от 1 до 9, что работает нормально. Как только подставляю 10, 11, 12, срабатывает 1-й блок. Как я понимаю, увидел в десятке первую цифру и сразу считает, что pos == 1.

Офлайн

#2 Окт. 4, 2019 15:14:47

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

Оператор ветвления if

Если переменная pos в диапазоне от 1 до 9, что работает нормально. Как только подставляю 10, 11, 12, срабатывает 1-й блок. Как я понимаю, увидел в десятке первую цифру и сразу считает, что pos == 1.
Если всё на самом дела так, то нужно бы выяснить, а откуда строка в этом самом template появляется (в твоём коде этого не видно). Скорее всего, проблема ещё там появляется.



Офлайн

#3 Окт. 4, 2019 15:18:10

nGreg
Зарегистрирован: 2019-09-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор ветвления if

Striver
Двумя строкамы выше. Эта переменная просто ссылается на текст, введённый тут же. Я отслеживал и её, и pos. Всё в полном порядке. Тип - str.

Офлайн

#4 Окт. 4, 2019 15:21:33

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

Оператор ветвления if

Я отслеживал и её, и pos. Всё в полном порядке. Тип - str.
Что значит “отслеживал”?
Приведи полный код, желательно в питон-блоке, так, чтобы отступы было видно.



Офлайн

#5 Окт. 4, 2019 15:22:58

nGreg
Зарегистрирован: 2019-09-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор ветвления if

Точно. Ты был прав. Вот тут я накосорезил.
template = template.format(“Вася”, “Пупкин”, “10”, “золоте”)
Отсюда она и берётся… Уже не 10, а 1…

Офлайн

#6 Окт. 4, 2019 15:32:06

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Оператор ветвления if

nGreg
Как только подставляю 10, 11, 12, срабатывает 1-й блок. Как я понимаю, увидел в десятке первую цифру и сразу считает, что pos == 1.
давайте ка полный код, потому как есть подозрение что в template у вас падают данные толи посимвольно, толи оно просто берет первый символ из всей строки.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#7 Окт. 4, 2019 15:36:31

nGreg
Зарегистрирован: 2019-09-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Оператор ветвления if

Всё уже, разобрался Со срезом индексов списка накосячил. Взял индекс только один, вместо двух. Вот он только первый элемент и отфильтровывал. Уже заработало. Пока к синтаксису питона привыкаю. После php различия нехилые. “.format” вообще для меня новинка. Третий день только осваиваю. Спасибо за подсказку!!!

Отредактировано nGreg (Окт. 4, 2019 15:37:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version