Commit cb12b8c6 by Patryk Czarnik

zadanie "formatuj" - wersja re

parent 56398c92
def formatuj(*args, **kwargs):
napis = '\n'.join(args)
# etap 1: łączę linie do pojedynczego napisu
# zamiast tego można użyć join
napis = ''
for arg in args:
if napis:
napis += '\n'
napis += arg
# etap 2: podmieniam wszystkie wystąpienia $parametr wartościami parametrów
for k, v in kwargs.items():
napis = napis.replace('$'+k, str(v))
return napis
def formatuj2(*args, **kwargs):
import re
return re.sub(r'\$(\w+)', lambda m: str(kwargs[m[1]]), '\n'.join(args))
def test_formatuj_1():
wynik = formatuj('Pierwsza linia', 'Druga linia', 'Trzecia linia')
wynik = formatuj2('Pierwsza linia', 'Druga linia', 'Trzecia linia')
assert wynik == 'Pierwsza linia\nDruga linia\nTrzecia linia'
def test_formatuj_2():
wynik = formatuj('Koszt towaru $nazwa wynosi $cena',
wynik = formatuj2('Koszt towaru $nazwa wynosi $cena',
'Wydaje mi się, że $cena PLN to trochę dużo',
cena = 3900, nazwa = 'karta graficzna')
assert wynik == 'Koszt towaru karta graficzna wynosi 3900\nWydaje mi się, że 3900 PLN to trochę dużo'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment