Az alábbi program (python 3) miért nem működik?
Egy programot akartam írni, ami képes a caesar kódolásra és ez nagyjából sikerült is, viszont csak úgy, hogy egyesével meg kellett írnom minden egyes betűjéhez a kódolandó szónak 60 sort, így ezt le akartam egyszerűsíteni.
Az "a" betű kódolása:
while True:
word = input(":")
lst = list(word)
for i in range(2):
if lst[i] == "a":
lst[i] = "b"
result = "".join(lst)
print(result)
Ahogy észrevettem a hiba az lst[i]-ben van, vistont a python logikája alapján az i betűnek működnie kéne. Miért nem jó ag lst után az i és hogyan lehetne megoldani, hogy ehez hasonló módon jó legyen?
1. Használj kódmegosztó oldalt - pastebin, hastebin - mert így a Pythonban igen fontos indentálás elveszik (illetve jobban is olvashatóbb).
2. while True: - minek a végtelen ciklus?
3. for i in range(2): - mi van ha nem kettő betűből áll a bevitt szöveg?)
4. if lst[i] == "a": - a helyett, hogy egyenként leellenőrizgeted a betűket (ez egy fajta megoldás):
* a kód elején létrehozol egy, az ABC betűit tartalmazó listát: abc = list("abcdefghijklmnopqrstuvwxyz")
* a bevitt szöveg karakterein végigmenő ciklusban leellenőrzöd, hogy az adott karakter kisbetűs változata megtalálható-e az ABC betűit tartalmazó listában
* ha igen, a bevitt szöveg karaktereit tartalmazó lista adott elemét az ABC betűit tartalmazó lista megfelelő elemével helyettesíted
Itt megnézheted: [link]
Kösz a szakszerű választ!
1. Legközelebb pastebint fogok használni.
2. A végtelenített ciklus arra volt, hogy ne kelljen folyamatosan újraindítani a programot.
3. Igen, problémáim voltak a betűk számával, egyenlőre úgy oldottam meg, hogy csak adott számú betűből álló szót kódoljon.
4. A programod tökéletes és valószínűleg a a lehető legrövidebb, viszont, mivel sem a .lower, sem a .index parancsot nem ismertem így más módszerrel próbáltam megoldani, de most utána néztem és így már világos a működésük.
Azt viszont még mindig nem értem, hogy a te programodban miért működött a lst[i] parancs és az enyémben miért nem?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!