Miért nem megy ez a Python program? (egyszerű kis feladat)
Feladat: "Írjon egy programot, ami meghatározza, hogy egy karakterlánc tartalmazzae az « e » karaktert."
Próbálkozás ami nem megy:
kl='live'
n=0
betu=0
e='e'
while kl[n]==e:
betu=betu+1
n=n+1
print betu,"darab e betut talaltam"
Kijavítaná valaki esetleg egy kis magyarázattal?
Pl itt egy következő feladat, lehet valamivel nem vagyok rendesen tisztába:
"Írjon egy programot, ami egy új változóba fordított sorrendben másolja át egy karakterlánc
karaktereit."
Tehát ha írok egy hello szót, azt úgy írja ki a végén hogy
olleh...while-ra van szükségem igaz?
a='levi'
n=3
b=0
while n==0:
b=a[n]
n=n-1
Ez így közelít a megoldáshoz?
Mivel van a gondom? Nagy szükségem lenne egy két segítségre, aki érti megkérem kicsit segítsen be.
>>> nev='levi'
>>> nev
'levi'
>>> nev[0]
'l'
>>> b=0
>>> b=nev[3]+nev[2]+nev[1]+nev[0]
>>> print b
ivel
Igy megírtam de scriptként hogyan építsem fel a programot, majd futtassam?
Első problémára:
if 'e' in 'live':
print 'bennevan'
Második problémára:
'hello'[::-1]
Remek...bár nem hinném, hogy az első kurzusaimon feladott feladatokra ha ezt így elvinném, el is lenne fogadva a feladat, szerintem alaposabban kéri összedobni ezeknek az algoritmusát. De egy másik kérdés. Ha a hello szó megfordítása 'hello'[::-1] akkor egy listát hogyan fordítok meg?
pl. t3=[1,2,3]
Az első amit írtál már alapból elméleti hibás.
Mármint mit akarsz a "while kl[n]==e: "-vel?
Ez azt jelenti, hogy addig megy, amíg az n. betű "e".
Neked pedig nem ez kéne, hanem a szó végéig menni (azaz mondjuk amilyen hosszú, ahány karakter) és minden betűre megnézni, hogy egyenlő-e "e"-vel. Ha igen, akkor növeled a betű számot.
A lista megfordítás is olyan, mint egy szövegé (ha jól rémlik), szóval tök ugyan úgy csináld.
(De mintha ezt közben külön is megkérdezted volna és már kaptál volna rá választ.)
Alaposabban összedobott algoritmus? A Python zenjére! Ennek a nyelvnek az a lényege, hogy egyszerű, letisztult, szép programokat lehet vele írni. Ha ezt beadod, a tanárnak el KELL fogadnia, mert nem attól szép a program, hogy hosszú. Plusz szabad a dokumentációt is olvasgatni, szóval ha azzal jön, hogy a szeletelést még nem tanultátok, akkor megmondod, hogy olvastál róla.
De az első, kérdésben kiírt programodban ott a hiba, hogy nem indul el. A feltétel, ami ellenőriz az, ahogy a kl string n-edik eleme 'e': ez hamis, hiszen n=0, vagyis az adott betű "l". Mivel hamis, a ciklus azonnal megszakad. Helyesen így kéne: addig megy, amíg _nem_ e, azaz:
while kl[n] != e:
Így végigmenne az e-ig, majd kilépne. Ez sem jó, mert te megszámolni akarod (bár egyszerűbb lenne csak kiírni az első találatnál), vagyis n-t kell inkrementálni ln(kl)-ig, azaz a szó karaktereinek számáig. Ez jelen esetben 4. Utána egy if ciklus, hogy ha e-t lát növelje a betu változót, és ezt írhatod ki a végén printtel. Azaz:
while n < len(kl):
if kl[n] == e:
i+=1 #ez megfelel az i=i+1-nek
n+=1
print betu, " darab e van benne"
Így érthető?
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!