Python 3.4.2 írtap egy scriptet, de nem tudom mi a baja?
Itta a script(elméletileg a if-es sorral van valami):
sz = input(""""Adjon meg egy szöveget: """)
k = input("""Adjon meg egy betűt, amire kiváncsi, hogy hányszor szerepel a szövegben:""")
d = 0
i = 0
while i <= (len(sz)):
if sz[i] == k:
d = d+1
i = i+1
print (d, k, """karakter szerepel ebben a szövegben.""")
x = input('Nyomjon Enter-t a kilépshez.')
Először is ne használj 3 idézőjelet, csak egyet, mert így átláthatatlan a forrás. A 3 idézőjel nem erre való.
Másodszor meg írd meg, hogy mit csinál a program, és mi a bajod azzal, amit csinál, ha válaszokat is akarsz, mert nem vagyunk gondolatolvasók.
Hajtsd végre lépésenként a kódot és nézd meg, hogy melyik i értéknél ad ki hibát. Illetve próbáld értelmezni a hibaüzenetet. Gondolkozz el azon, hányszor fog végrehajtódni a ciklusmag?
Aztán rá fogsz jönni, hogy az ifes sor nagyon rendben van, nem az a hiba forrása.
#1:Ha elolvastad volna a leírást rendesen és értelmezed
is, akkor "nagyon" nehezen, de rájöhettél volna, hogy
mitcsinál a program. Ráadásul ha tudnám mi baja van
nem kérdeztem volna meg...
#2: [link]
Először is van erre függvény:
sz = 'Hello World'
d = sz.count('l') #d=3 lesz, meg 3 db 'l' van a szövegben
Másodszor is ahogy azt másik is írták ne használj tripla idézőjelet ha a szöveg 1 soros. Tripla idézőjel akkor jó ha több soros szöveget írsz, így nem kell kiírni többek között a sortöréseket:
"""valami
akarmi
stb""" == 'valami\nakarmi\nstb'
Harmadszor: ha egy iterálható objektum elemein akarsz végigmenni, használj for ciklust:
d=0
for betu in szoveg:
&enspd += betu==k
A hibát a while feltételében keresd.
Ha van egy 3 betűs szó, akkor annak betűi szó[0]+szó[1]+szó[2], és nem létezik olyan hogy szó[3], ekkor IndexError-t fogsz kapni. Ez azt jelenti, hogy nem létezik olyan indexű elem.
A végén pedig nem kell beolvasni az "x" változóba az inputot ha nem fogod használni, elég csak azt írni hogy:
input('Nyomj entert')
A példa ez akart lenni:
d=0
for betu in szoveg:
d += betu==k
De szétszedhető úgy is ahogy te írtad:
if betu == k:
d = d + 1
#4 Nem lenne okosabb a következő?
while i < len(sz):
Sanyika,
én elolvastam rendesen, és nem azt kérdeztem, hogy szerinted mit kéne csinálnia, hanem hogy MIT CSINÁL.
Kiír eredményt?
Mit?
Elakad hibaüzenettel?
Ha igen, mi az?
Na ez egy értelmes kérdéskiírás. Nem az, hogy "de nem tudom mi a baja?".
Segíteni próbáltam, de rossz helyen, mert már megint beleszaladtam valakibe, aki a segítőknek szól be gondolkodás helyett. Azért köszönöd, hogy rád szántam az időmet, többet nem fogom.
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!