Mi a baj ezzel a kóddal? Python 3.10
def Code():
x = input('Codeing: ')
b = len(x)
global c
c = 1
for c in b:
x.replace('a','@')
x.replace('A','@')
x.replace('h','#')
x.replace('H', '#')
c = c + 1
print(x)
a = input('C/D: ')
if a == 'C':
print(Code())
Példa egy megvalósításra (persze, lehet sokféleképpen, szebben, hatékonyabban, de a kérdésben szereplő kódhoz igazítottam a megoldást):
Pár dolog:
1. Az indentálások - amik a Pythonban fontosak - megőrzése érdekében a kód megosztásánál használj kódmegosztó oldalt (például a mutatott pastebin)
2. Használj egyértelmű függvény- és változóneveket (az a, b, x, c nem az)
3. A függvények és változók nevénél használj kisbetűket és a szavak elválasztásánál alulvonást (_) - ez a javasolt kódolási stílus.
4. A karakterláncban cserére használatos str.replace() függvény ( [link] ) a teljes szövegben cserél, nem csak egy karaktert
Vagy - az előzőt folytatva - ha "klasszikus módon", a karakterlánc betűin akarsz végigiterálni, akkor:
A kérdésben leírt kód egyszerűen hulladék. Tényleg, nem alázni akarlak vagy bármi, de soronként több hiba van benne kb.
1. "Codeing" - Ez egy értelmetlen szó.
2. Sztringen nem így iterálunk. A string eleve iterable, nem úgy mint az integer a te példádban (for c in b, ahol b = len(x)). De amúgy is hulladék.
3. Ha végig gondoltad volna, hogy mit csinál a for loop-od, rájöhettél volna, hogy teljesen értelmetlen. Minden ciklusban ugyan azon a stringen (x) hajtod végre ugyan azt a műveletet.... minek? Nem gondolod, hogy egyszer is elég? Miért nem tudod, hogy a .replace() a teljes stringen cserél?
4. Ha nem egybetűs változóneveket használtál volna, rájöhettél volna, hogy értelmetlen az algoritmusod.
5. Áruld már el, hogy mégis mi a francnak kellett global c? Nemcsak, hogy antipattern, ebben az esetben teljesen értelmetlen, mert csak a függvényben hozod létre és használod a c változót.
Komolyan mondom, ha egy 5 éves gyerekkel elbeszélgetek, jobban el tudja mondani lépésről lépésre, hogy hogyan kellene kinéznie az algoritmusnak.
text = str(input("Enter the text"))
text = text.split('a')
a = '@'
text = a.join(text)
text = text.split('A')
A = '@'
text = a.join(text)
text = text.split('h')
h = '#'
text = a.join(text)
text = text.split('H')
H = '#'
text = a.join(text)
print(text)
Nem muszály minden szimbólumnál kiirkálni, hogy a = '@' ... Úgy is elég írni, hogy text = '@'.join(text)
Ezt aztán meg már alakíthatod úgy ahogy szeretnéd, teheted functionba vagy amit akarsz.
#6 vagyok
Opsz! Másolás után kicsit átírogattam a betűket, de a join-nál elfelejtettem.
text = str(input("Enter the text"))
text = text.split('a')
a = '@'
text = a.join(text)
text = text.split('A')
A = '@'
text = A.join(text)
text = text.split('h')
h = '#'
text = h.join(text)
text = text.split('H')
H = '#'
text = H.join(text)
print(text)
Így már tökéletes 😁
input: Atyaúristen, ez mi akar lenni? Habrakahabra
output: @ty@úristen, ez mi @k@r lenni? #@br@k@#@br@
További 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!