Python-джедай #19 - Форматирование строк

preview_player
Показать описание
Сегодня мы с Вами обсудит тему форматирования строк в Python.
Узнаем об операторе % (аналог printf) и методе .format().

►►► Второй канал Хауди, подпишись ;)

Хочешь зарабатывать на своих видео в YouTube?

#Ссылки из видео:
1)

► Жми красную кнопку "Подписаться" под видео :)
► Есть вопрос? - Задай его лично мне в наших группах!
===

#Реквизиты для донатства | Поддержи канал!
Z252920168434
R250434217196

Музыкальный трек предоставлен YouTube Audio Library.
Рекомендации по теме
Комментарии
Автор

Я сначала тоже сделал проверку на четность, правда с другой стороны зашел, но результат такой же был, а потом, как увидел у Вас конструкцию с тем, что длину в форматировании тоже можно отсылать к заданной функции, просто прописал, что добавляю в любом случае 6 символов к длине слова (и обошел таким образом ошибку при слишком длинном имени), и распределяю все по середине =)
Получился такой вот код:

name = input("Введите имя:")
count = len(name)+6

DanyaJeyJey
Автор

Для решения задачи в конце надо было сначала от переменной length отнять длину строки input_str, а уже потом результат проверять на четность (length - len(input_str))%2. Ведь если length будет нечетным, то добавлять символ уже не надо будет.

DimaVort
Автор

Добрый день!

Искренне нравится курс, хоть он и про самые основы - это как раз мой текущий уровень)

Подача материала доходчивая, и это действительно здОрово!

Единственное уточнение - в ходе всего курса, когда речь заходит о конкатенации, ты используешь для вывода в print сложение (+) текста, числовых переменных и пр. В других видео ты упоминал об f-строках. Но можно ведь задать просто перечисление, через запятую. И выведет точно так же, и без конфликта типов данных (прекрасно выводит числа вместе со строками, без преобразований int/float в str, или наоборот).
Понятно, что в случае, если нам действительно нужно получить сумму, скажем, чисел - подойдет лишь оператор +, но когда речь идёт о выводе в print лишь информационного текста, вместе с каким-либо числовым значением, разве не целесообразнее задавать перечисление через запятую?
Или есть какие-то подводные камни, которые обуславливают использование "+"? Я только начинаю и могу чего-то не знать, поэтому спросил о том, в чем сомневаюсь.

Заранее спасибо за ответ! И спасибо за твои видео!

Black-One-Sh.
Автор

В последнем примере в заблуждение ввёл словами, говоря, что "10 поделим на Джесси", в то время как в реале поехало "Джесси поделим на 2". Т.е. сначала недоумение "причём тут деление на Джесси" (с поправкой на то, что имеется в виду длина имени), а затем " И где 10, и что за двойка?".
Ну и да, делить на 2 надо было разницу между 10 и "Джесси". Потому что в текущей реализации если бы заменил "10" на какой-нибудь "11", то всё посыпалось бы.
Но за урок в любом случае спасибо! )

КонстантинСергиенко-яя
Автор

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

name = input('Введите свое имя: ')

value = int(input('Введите кол-во заполнителей(с одной стороны): '))
sign = input('Введите заполнитель: ')

length = len(name) + value * 2

print('{0:{1}^{2}}'.format(name, sign, length))

Forgh-po
Автор

Можно было еще рассказать про фишку из 3.6, просто:
name = 'Вася'
print(f'Привет, {name}!')
Все остальное из метода format(), вроде бы, тоже работает.
Даже методы вызывать можно внутри фигурных скобок.
from datetime import datetime
print(f'Сейчас {datetime.now()}')

РоманЕлизаров-щм
Автор

24:07
Можно сделать без if:

inputStr = input('Введите имя: ')
print(('{0:*^' + str(10 + (len(inputStr) % 2)) + '}').format(inputStr))

StimSmit
Автор

user_input = input('Введите что-то: ')

if len(user_input) % 2 != 0:
print('{0:_^21}'.format( user_input ))
else:
print('{0:_^20}'.format( user_input ))

Я вырубил видео, попробывал создать переменную и через условия сделать, не мог сконкатенировать, в итоге решил сделать так, как по мне легко и работает
Но в видео всё проще было)

Merlake.
Автор

Ура, продолжение курса по питон, как раз недавно закончил смотреть прошлые видео. Спасибо

JGalaxyL
Автор

спасибо за уроки, всё очень понятно и вообще круто, не думал, что начинать программировать будет так легко, я кстати задачу решил почти так же
n = input('Введите имя: ')
if len(n) % 2 == 0:
print('{0:х^20}'.format(n))
else:
print('{0:x^21}'.format(n))

ВячеславМаслеников-мш
Автор

Молитва услышана !!! Новое видео по питону на твоем канале, спасибо.

zerogamechannel
Автор

лично я сделал так:
name = str(input("кто ты, смертный? "))
if len(name)%2 == 0:
n = 10
else:
n = 11
print(('Очень приятно, ' + '{0:*^'+ str(n) +'}').format(name) + ', щщс!')

SultanSaburov-te
Автор

насчет format можно сделать легче
name = "Джесси"
age = 21
print(f"Привет {name}, тебе уже {age} год")

circassianman
Автор

Вот еще проще способ решить последнюю задачку:
a = input("Input your name: ")
b = len(a) + 6

То есть какое бы имя вы не ввели, всегда будут 3 звездочки вначале и в конце.

АнтонГришин-зп
Автор

Спасибо за проделаную работу! Жаль что это не полный курс. И всё же это дало минимальное понимание языка. Пришла сюда после видео "пайтон за час". Просмотрела все уроки, сделала конспект. Единственный курс уроков на ютуб который я просмотрела целиком и не забросила. После этого начну изучать пайтон киви по урокам.

Kyryeka
Автор

Поделить Джесси на 10 частей? Не, ну это бан.

jmonix
Автор

Привет. Спасибо за видео.

Не проще было сделать:

symCount = str( len(input_str) + 4 )

И его потом вставлять в строку для заполнения символами.
В этом случае перед и после имени будут по два символа, в независимости от количества символов в имени (при выравнивании по центру).

dmitriierofeev
Автор

Законспектировал, начал проверять, если сделать, как в примере, то будет просто добавляться 1 символ, не хватает ==1
В примере:
name = 'Jessy'
length = 10
if (len(name) %2 ) : (если длина делённая по модулю, то
length +=1 длина +1)
print ( (name))

Правильно:
name = 'Jessy'
length = 10
if (len(name) %2 ) ==1: (если длина делённая по модулю РАВНО 1, то
length +=1 длина +1)
print ( (name))

eskimosssr
Автор

Форматирование строк - хорошая тема. И по pyhon и разным библиотекам хотелось бы больше материала. Спасибо.

neofit
Автор

Наконец-то, дождались!!))..спасибо!..не затягивай, пожалуйста, с продолжением!

flatroman
join shbcf.ru