""" Урок 22. Строки: форматирование — весь код примеров одним файлом. Источник: subjects/python-fundamentals/course/lessons/22-strings-formatting/examples.html Файл собран автоматически (tools/build_lesson_examples.py): правьте страницу урока. Запуск: python lesson-22.py """ # ==================================================================== # Пример 1. Строка — неизменяемая последовательность # ==================================================================== name = "Alice" upper_name = name.upper() print(name) # Alice — исходная строка не изменилась print(upper_name) # ALICE — метод вернул новую строку try: name[0] = "a" except TypeError as error: print("TypeError:", error) # TypeError: 'str' object does not support item assignment # ==================================================================== # Пример 2. Конкатенация + и повторение * # ==================================================================== first = "Python" second = "Fundamentals" title = first + " " + second print(title) # Python Fundamentals separator = "-" * 20 print(separator) # -------------------- greeting = "Hi! " * 3 print(greeting) # Hi! Hi! Hi! # ==================================================================== # Пример 3. f-strings: базовое использование # ==================================================================== name = "Bob" age = 25 message = f"My name is {name} and I am {age} years old." print(message) # My name is Bob and I am 25 years old. # ==================================================================== # Пример 4. f-strings: выражения и вызовы методов внутри {} # ==================================================================== word = "python" x, y = 10, 20 print(f"The sum of {x} and {y} is {x + y}.") # The sum of 10 and 20 is 30. print(f"'{word}' in upper case: {word.upper()}, length: {len(word)}.") # 'python' in upper case: PYTHON, length: 6. # ==================================================================== # Пример 5. Спецификаторы формата: точность, ширина, выравнивание, нули # ==================================================================== pi = 3.14159 price = 1234567.89 print(f"Pi ≈ {pi:.2f}") # Pi ≈ 3.14 print(f"Price: ${price:,.2f}") # Price: $1,234,567.89 label = "Python" print(f"[{label:<10}]") # [Python ] print(f"[{label:>10}]") # [ Python] print(f"[{label:^10}]") # [ Python ] number = 42 print(f"{number:05}") # 00042 # ==================================================================== # Пример 6. str.format() как альтернатива f-strings # ==================================================================== name = "Carol" age = 28 print("Name: {}, Age: {}".format(name, age)) # Name: Carol, Age: 28 print("Name: {n}, Age: {a}".format(n=name, a=age)) # Name: Carol, Age: 28 template = "Hello, {}!" # шаблон хранится отдельно от данных print(template.format("World")) # Hello, World! # ==================================================================== # Пример 7. Именованные плейсхолдеры и .format_map() # ==================================================================== user = {"name": "Dave", "age": 41} print("Name: {name}, Age: {age}".format_map(user)) # Name: Dave, Age: 41 # ==================================================================== # Пример 8. Экранирование фигурных скобок {{ }} # ==================================================================== value = 5 print(f"{{value}} equals {value}") # {value} equals 5 print("Use {{}} for literal braces: {}".format("like this")) # Use {} for literal braces: like this # ==================================================================== # Пример 9. Отладочный вывод f"{x=}" # ==================================================================== count = 7 print(f"{count=}") # count=7 items = ["a", "b", "c"] print(f"{len(items)=}") # len(items)=3 # ==================================================================== # Пример 10. Полезные строковые методы для подготовки текста # ==================================================================== raw = " Python Fundamentals " clean = raw.strip() print(f"'{clean}'") # 'Python Fundamentals' parts = clean.split() print(parts) # ['Python', 'Fundamentals'] joined = "-".join(parts) print(joined) # Python-Fundamentals print(clean.upper(), clean.lower()) # PYTHON FUNDAMENTALS python fundamentals code = "7" print(code.zfill(4)) # 0007 # ==================================================================== # Пример 11. Границы применимости и типичные ошибки # ==================================================================== data = {"key": "value"} print(f"{data['key']}") # value — разные кавычки: строка снаружи f"...", ключ внутри '...' source_with_same_quotes = 'f"{data["key"]}"' try: compile(source_with_same_quotes, "", "eval") except SyntaxError as error: print("SyntaxError:", error) # SyntaxError: f-string: unmatched '[' (, line 1) text = "abc" before_id = id(text) text += "d" print(text, id(text) == before_id) # abcd False — новая строка в другом месте памяти