Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 15. diel - Textové reťazce v Pythone do tretice - Split a Join

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
DarkCoder
Člen
Avatar
Odpovedá na Michaela Zahradníková
DarkCoder:12. augusta 16:06

Pokud Ti jde o pochopení funkcí split() a join() bez omáčky, podívej na následující příklad.

text = "jablko-banán-hruška"
print(text)               # Výstup: jablko-banán-hruška

# split vrací list
tokeny = text.split("-")  # ['jablko', 'banán', 'hruška']

# Práce se seznamem
print(tokeny[0])          # přístup přes index → 'Výstup: jablko'
tokeny.append("meloun")   # přidání nového prvku
tokeny.remove("banán")    # odebrání podle hodnoty
tokeny.sort()             # seřazení

for token in tokeny:      # Výstup: hruška jablko meloun
    print(token, end=' ')
print()

text_2 = "-".join(tokeny)
print(text_2)             # Výstup: hruška-jablko-meloun
Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
DarkCoder
Člen
Avatar
DarkCoder:12. augusta 16:25

K výkladu:

Proč nesdělíte jasně že funkce split vrací seznam (list)? Čtenářům to pak bude mnohem srozumitelnější.

Stejně tak když tokenizujete znaky pomocí split, proč nezvolíte funkci bez parametrů která rozděluje podle všech bílých znaků oproti funkci s argumentem mezery.

A nakonec řízené toku programu podle vyhodnocení výjimky není vhodné. Mnohem lepší je otestovat přítomnost znaku a podle toho pokračovat dál.

# Morseova abeceda – znaky
abecedni_znaky = "abcdefghijklmnopqrstuvwxyz"
morseovy_znaky = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
                  "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
                  "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]

# Vstupní zakódovaná zpráva
sifrovana_zprava = ".-.. . --- -.   .- .-. -.. ---"
print(f"Původní zpráva: {sifrovana_zprava}")

# Rozdělení na Morseovy znaky
znaky = sifrovana_zprava.split()
# znaky = sifrovana_zprava.split(" ")

# Výsledek
zprava = ""

# Dekódování
for morseuv_znak in znaky:
    if morseuv_znak in morseovy_znaky:
        index = morseovy_znaky.index(morseuv_znak)
        zprava += abecedni_znaky[index]
    else:
        zprava += "?"  # Neznámý znak

# Výpis výsledku
print(f"Dekódovaná zpráva: {zprava}")

Zájemci o rozdíl mezi bezparametrovým a parametrových splitem, nechť si zakomentují původní verzi o použijí druhou.

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Kristýna Černošková:18. septembra 19:16

Potřebovala bych podrobnější popis k jednotlivým příkladům a víc příkladů.

Avatar
DarkCoder
Člen
Avatar
Odpovedá na Kristýna Černošková
DarkCoder:19. septembra 9:08

Zadání:

Máš daný jeden řetězec obsahující více IP adres oddělených čárkou. Každá IP adresa je ve formátu xxx.xxx.xxx.xxx, tedy čtyři části (oktet) oddělené tečkami.

Tvým úkolem je na jeden řádek vypsat poslední oktety od sebe oddělené mezerou.

vstup (předem daný v kódu):

ip_adresy = "192.168.1.1,10.0.0.254,172.16.0.3"

výstup:

1 254 3

Postup:

Rozdělit řetězec podle čárek na jednotlivé IP adresy.
Každou IP adresu rozdělit na části podle teček.
Z každé IP adresy získat poslední (čtvrtý) oktet pomocí kladného indexu.
Všechny získané části uložit do seznamu.
Výsledný seznam převést na jeden řetězec, kde budou hodnoty oddělené mezerou.
Výsledný řetězec vytisknout.

Pokud některá IP adresa nemá správný formát (nemá 4 části), místo posledního oktetu ulož text "CHYBA".

Řešení:

# Vstupní řetězec IP adres
ip_adresy = "192.168.1.1,10.0.0.254,172.16.0.3"

# Rozdělení podle čárek na jednotlivé IP adresy
ip_list = ip_adresy.split(',')

# Seznam pro uložení posledních částí
posledni_casti = []

# Pro každou IP adresu:
for ip in ip_list:
    parts = ip.split('.')  # rozdělení podle teček
    if len(parts) == 4:     # kontrola, že IP má správný formát
        posledni_casti.append(parts[3])  # přístup přes kladný index
    else:
        posledni_casti.append("CHYBA")  # ošetření neplatného formátu

# Výpis na jeden řádek
print(" ".join(posledni_casti))
Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Jan Kupčík
Člen
Avatar
Jan Kupčík:12. novembra 17:30

Příklad s Morseovkou se mi zdál příliš složity na pochopení Split a Join.

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 5 správy z 35.