matematykaszkolna.pl
python, pętla for Ania: #python #for Zadanie: Podziel string na pary znaków. Jeśli string zawiera nieparzystą liczbę znaków, brakujący znak w ostatniej parze należy zastąpić podkreślnikiem ('...'). Mam rozwiązanie (poniżej), ale nie do końca rozumiem czerwony fragment i chcę to zapisać w inny sposób (na zielono), gdzie popełniam błąd w rozumowaniu ? def splitpairs(a): if len(a) == 0: return [] novo = a[i:i + 2] for i in range(0, len(a), 2) if len(novo[−1]) == 1: novo[−1] = novo[−1] + '... ' return novo def splitpairs(a): l=len(a) if l==0: return [] for i in range(0,l,2): novo=a[i:i+2] if len(novo[−1])==1: novo[−1]=novo[−1]+'...' return novo
10 kwi 10:22
HGH: czerwony fragment 'wycina' dwuznakowe fragmenty w calym wyrazie czyli po prostu te pary o których mowa w zadaniu i tworzy z nich liste, chyba brakuje tam nawiasow kwadratowych emotka
10 kwi 13:13
Maciess: Czerwony fragment to konstrukcja listy. Nie zadziała w takiej formie jak wkleiłaś. Trzeba czerwony kod umieścić w kwadratowych nawiasach. Jeśli nie widziałaś nigdy takiego czegoś to zerknij do dokumentacji (https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions). Z niezrozumienie tego fragmentu wziął twój błąd napisania tego. Bo w rozwiązaniu u góry, novo to lista. A u ciebie novo to slice ze stringa. Zauważ, że w każdej iteracji novo dostaje nową wartość, ale zawsze jest to string! if len(novo[−1])==1: Skoro novo to string, to novo[−1] będzie zawsze miało długość jeden. W efekcie twój program powinien zwracać ostatni (albo przed) znak z napisu z dołączonymi kropeczkami. Spróbuj to poprawić, tak aby novo było listą, a w pętli dodawaj do niego nowe slice. Poniżej masz poprawiony kod twojego rozwiązania, ale radzę najpierw samemu spróbować. https://pastebin.com/RQz8MWcN
10 kwi 13:21
Ania: Tak, fakt, przy czerwonym uciekły nawiasy kwadratowe. Dziękuję bardzo − juz rozumiem ! emotka
10 kwi 13:42