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 – 14. diel - Textové reťazce v Pythone druhýkrát - Práca so znakmi

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
Odpovedá na DarkCoder
Michal Salvet:30.6.2023 11:08

Oprava u mne: pokud jsou prvni (porovnavane) znaky stejne tak se porovnava delka retezce.

Jo takhle nejak jsem to po dohledani pochopil, ale ta citace z clanku svadi k tomu ze se vemou postupne znaky a porovnavaji se coz by v pripade naseho kodu bylo e<= d False ale e<=f by bylo uz True. Me je to jasne jen to vysvetleni v clanku je trochu zavadejici.

Avatar
DarkCoder
Člen
Avatar
Odpovedá na Michal Salvet
DarkCoder:30.6.2023 11:32

Je třeba si to nejprve v hlavě představit. Z toho pak lze vyloučit, že nebudeme porovnávat první znak prvního řetězce s druhým znakem druhého řetězce.

Porovnávají se znaky na stejných indexech a pak se řeší délky řetězců. Taková funkce by pak mohla vypadat následovně:

def lexikograficky_porovnej(retezec1, retezec2):
    delka1 = len(retezec1)
    delka2 = len(retezec2)

    # Porovnej znaky na indexech
    for i in range(min(delka1, delka2)):
        if retezec1[i] < retezec2[i]:
            return -1  # retezec1 je menší
        elif retezec1[i] > retezec2[i]:
            return 1  # retezec1 je větší

    # Porovnání na základě délky
    if delka1 < delka2:
        return -1  # retezec1 je menší
    elif delka1 > delka2:
        return 1  # retezec1 je větší

    return 0  # řetězce jsou shodné
Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Jiří Tomčala:17.9.2023 13:24

Doporučil bych užívat pojem číslice pro znaky, ze kterých se čísla sestavují. Předpokádám, že kódovací tabulka pracuje s číslicemi. Jinak je to skvělé.

Avatar
Jakub Ježek
Člen
Avatar
Jakub Ježek:3.11.2023 16:11

"Řetězce se porovnávají podle abecedy. Přesněji řečeno tak, že se vezmou postupně jednotlivé znaky porovnávaných řetězců a porovnají se pomocí funkce ord(). Tudíž znak a je menší než b, jelikož číselná hodnota a je 97 a číselná hodnota b je 98."
Škoda teda, toto je jediná zmínka o funkci ord() a nikde neni rozvedeno, k čemuže teda slouží. Taky škoda, že nikde neni vysvětleno, kde se vzala hodnota 97 resp. 98...

Avatar
Jakub Ježek
Člen
Avatar
Jakub Ježek:3.11.2023 17:10

Článek je skvělý a oceňuji konkrétní příklady k vyzkoušení. Jediné co mně nevyhovuje je, když se na začátku lekce něco "prohlásí" bez jakéhokoli vysvětlení a to vysvětlení pak najdeme ke konci lekce. Vždyť ASCII a funkce ord(), klidně mohly být vysvětleny v úvodu.

Avatar
Dušan Kovářík:30.12.2023 11:24

V programu, který analyzuje větu, chybí ve výčtu samohlásek 'y' a 'ý'.

Avatar
Karel Zaoral
Člen
Avatar
Odpovedá na Dušan Kovářík
Karel Zaoral:30.12.2023 13:05

Ahoj Dušane, máš pravdu, doplnil jsem y a ý! Díky za zpětnou vazbu!

Avatar
Pavlína Šindelařová:4.2.2024 20:48

Ahoj,
v tématu "Řezání"- ukázkový příklad:

retezec = "Honolulu"
print(retezec[0])
print(retezec[1:4])
print(retezec[::2])
print(retezec[3:9:2])

poslední -tj [3:9:2]) mi není jasná hodnota n protože (slovo Honolulu má 8 písmen tedy 7 indexů) proč to funguje s "9"?
Díky Pavlína

Avatar
DarkCoder
Člen
Avatar
Odpovedá na Pavlína Šindelařová
DarkCoder:4.2.2024 21:43

"Honolulu" má 8 písmen, indexy od 0 do 7. Výběr půjde až k maximálnímu platnému indexu, a jakýkoli index za tímto rozsahem nebude způsobovat chybu, ale nebude brán v úvahu. Vypíše se tedy: "ouu".

Ideální je však vždy se vyhnout přesahování hranic rozsahu, aby kód byl čitelný a odolný vůči chybám. Programátor by měl dbát na to, aby indexy byly v rámci platných hranic, aby byl kód srozumitelný a jednoznačný.

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
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é 10 správy z 46.