IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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: Kód ord() v Pythoně. Význam ord("0").

V předchozím kvízu, Online test znalostí Python 2.7, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Alexandr Saveljev:17.8.2023 13:30

Dobrý den!
Prosím o pomoc v pochopení kódu:

def prevedCisloNaZnak(cislo):
    if (cislo >= 0 and cislo <= 9):
        return chr(cislo + ord('0'));
    else:
        return chr(cislo - 10 + ord('A'));

Nerozumím co tady znamená ord('0').

Zkusil jsem: Zkusil jsem printovat, ale nechapu. Tady ord('0') - to je číslo, jo?
Nebo je to nějaké písmeno?

Chci docílit: Pochopení.

 
Odpovědět
17.8.2023 13:30
Avatar
Alexandr Saveljev:17.8.2023 15:18

Omlouvám se, teď rozumím, číslo 0 je převedeno na řetězec, str() "0".
Děkuji!

 
Nahoru Odpovědět
17.8.2023 15:18
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Alexandr Saveljev
DarkCoder:17.8.2023 17:24

Ta funkce hlavně má dva zásadní nedostatky:

  1. Identifikátor funkce nevystihuje to co funkce má dělat.
  2. Není robustní

Ta funkce převádí decimální hodnotu čísla na odpovídající znak v hexadecimální soustavě.

def iToHexAscii(cislo):
    try:
        cislo = int(cislo)
    except ValueError:
        return 'X'  # Neplatný vstup - nejedná se o číslo

    if cislo < 0 or cislo > 15:
        return 'X'  # Neplatný vstup - mimo rozsah

    if cislo <= 9:
        return chr(cislo + ord('0'))
    else:
        return chr(cislo - 10 + ord('A'))

Při neplatném vstupu funkce vrátí 'X'.

Pokud víme, že vstup je korektní, tak z důvodu rychlosti použijeme alternativu:

def iToHexAsciiNoValidation(cislo):
    cislo = int(cislo)

    if cislo <= 9:
        return chr(cislo + ord('0'))
    else:
        return chr(cislo - 10 + ord('A'))
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
17.8.2023 17:24
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Alexandr Saveljev:18.8.2023 9:56

Děkuji!

 
Nahoru Odpovědět
18.8.2023 9:56
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 4 zpráv z 4.