NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 14 - Textové řetězce v Pythonu podruhé - Práce se znaky

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá 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.

 
Odpovědět
30.6.2023 11:08
Avatar
DarkCoder
Člen
Avatar
Odpovídá 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é
Odpovědět
30.6.2023 11:32
"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é.

 
Odpovědět
17.9.2023 13:24
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...

 
Odpovědět
3.11.2023 16:11
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.

 
Odpovědět
3.11.2023 17:10
Avatar
Dušan Kovářík:30.12.2023 11:24

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

 
Odpovědět
30.12.2023 11:24
Avatar
Karel Zaoral
Člen
Avatar
Odpovídá 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!

 
Odpovědět
30.12.2023 13:05
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

 
Odpovědět
4.2.2024 20:48
Avatar
DarkCoder
Člen
Avatar
Odpovídá 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ý.

Odpovědět
4.2.2024 21:43
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 40.