Diskuze: úkol v Řešené úlohy k 9. a 10. lekci Pythonu

Člen

Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Zřejmě chceme začínat jedničkou.
heslo[i % len(heslo)] # toto zajistí, že heslo indexujeme vždy 0 do délky hesla
(ord("a") - 1) # odečítáme 96 (resp 97 - 1), tak aby v šifře mělo 'a' číslo 1
x = ord(heslo[i % len(heslo)]) - (ord("a") - 1)
V předchozím úryvku kódu dochází k neshodě mezi programátorským zápisem a algoritmem.
Podívej se na závorky v daném příkazu. Celý příkaz se skládá ze dvou částí, nikoli ze tří:
Pokud bychom měli heslo ahoj, pak první hodnota bude jedna protože 97 -
(97 - 1).
Ač je výsledná hodnota správná, je provedení matoucí.
Celý příkaz se musí skládat ze tří částí:
Takový zápis by vypadal takto:
x = ord(heslo[i % len(heslo)]) - ord("a") + 1
Výsledek je 97 - 97 + 1 = 1
Takže posun pro a je 1, pro b 2, pro c 3, atd.
Jak málo stačí aby byl i tak jednoduchý algoritmus obtížně pochopitelný..
Nyní by Ti mělo být vše jasné.
Teď jasně, ale bohužel pouze po Tvém vysvětlení.
Pojdu dál.
Děkuji!
Nemáš zač. Když budeš označovat příspěvky, které Ti nejvíce pomohou, jako řešení, přispěješ tím na pomoc druhým tam kam mají ostatní omezený přístup..
Ona tam ta jednička je vlastně blbost, protože 'a' má mít posun 0. Takže v dalším kroku, tj. získání nového znaku do výstupu, člověk musí stejně tu jedničku zase odečíst. Takže v dalším kroku bude např. místo:
vystup += chr(ord(znak) + x)
toto
vystup += chr(ord(znak) + x - 1)
Chapu, ale nesouhlasím. Ano, máte právdu, a
mělo by mít č.
0
. V tomto případě poslední,
z, mělo by být č. `25
. Ale pokud všechny zná, že alfabet má
26 písmen, to pro komfortní počet v úkolu uvedli podmínku, že
a
= 1
.
Zobrazeno 7 zpráv z 7.