Szeretnék egy kis segítséget Pythonban. (? )
Sziasztok a következő a feladat:
rjon egy programot, ami egy új változóba fordított sorrendben másolja át egy karakterlánc
karaktereit.
Így például « zorglub » ból « bulgroz» lesz.
El is készítettem:
a = "szia"
n=a[3]
b=0
while b < 4:
....print (a[3-b],)
....b=b+1
Csak egy gond van vele: Nem egy sorba írja ki a "aizs" szót, hanem:
a
i
z
s
Nem tudom, hogy csinálhatnám meg, hogy egy sorba írja..
Találtam egy ilyet, hogy:
>>> a, b, c = 1, 1, 1
>>> while c < 11 :
... print b,
... a, b, c = b, a+b, c+1
Amikor elindítjuk a programot, a következőt kapjuk :
1 2 3 5 8 13 21 34 55 89
A Fibonacci sor tagjai ugyanabba a sorba vannak kiírva. Ezt annak a vesszőnek köszönhetjük, amit a print
utasítást tartalmazó sor végére írtunk. Ha töröljük a vesszőt, akkor a számok egymás alá lesznek írva.
A segítségeket előre is megköszönném...
Az én esetemben, tökmindegy hova rakom a vesszőt, ugyanúgy egymás alá irkálja...
Köszönöm.
print (a[3-b],end="",flush=True)
Így már működik. :P
Szöveg megfordítása egyébként ennyi Pythonban:
print("szia"[::-1])
Köszi, ezt megjegyzem.
Egyébként, egy könyv alapján megyek végig, ott pedig, még nem írtak ilyet.
Csak szólok, hogy a feladat az volt, hogy "egy új változóba fordított sorrendben másolja át egy karakterlánc karaktereit."
Azzal, hogy kiíratsz valamit, a feladatot még nem oldottad meg.
További kérdések:
a = "szia"
n=a[3] # ez minek ide???
b=0
while b < 4: # mi ez a 4? Ha a = "szevasz", akkor már ez nem működik...
....print (a[3-b],) # mi ez a 3? Ha a = "szevasz", akkor már ez nem működik..
....b=b+1
Egy fokkal jobb megoldás:
a = "szia"
b = 0
uj = ""
while b < len(a):
....b.append(a[len(a)-1-b])
....b = b + 1
print(uj)
Az igazi persze tényleg az, hogy
uj = a[::-1]
de ezt majd később tanulod úgyis.
Igen, átnéztem utána, rájöttem, hogy az a "n", ott tök felesleges volt....
Egyébként, a kódodba használt "append"-et sem tanultam még, szóval abból gazdálkodtam, amit tudtam....
Hát ez baj, amikor nem tudja az ember, hogy amikor segítséget akar adni, mennyi előzetes ismeretet feltételezzen. Ha nagyon minimumról indultál, és a legminimálisabb eszközkészletet tételezek fel, akkor ezt javasolnám:
string = "cirmoscica"
rev_string = ""
for i in range(1,len(string)+1):
rev_string = rev_string + string[-i]
print rev_string
Bár ha az indexelést tudod, akkor a [::-1] is ismerős lehet, lévén indexelésen alapuló megoldás (mondjuk én se ismertem :).
Köszönöm... :D
Egyébként:
Itt haladok sorban... bár az elmúlt ~2 napban (+ a mai nap) nem volt időm rá, mivel nem ezt tanulom a suliban...
50. Oldalt a "Gyakorlatok"-nál járok....
Sajnos, még a "for" szót sem tanultam...
Eljutottam most idáig:
a="mindegymicsoda"
b=0
c=len(a)
while b<=c:
....print (c-b)
....b=b+1
Nos, szépen ki is írja egymás alá az "a" betűinek a sorszámát... viszont emlékeim szerint nem tanultam olyat, amivel ezeket a "számokat" "betűkké" tudnám alakítani....
Próbáltam olyat is, hogy: print (a[c-b]) viszont itt nyilván nem fogadta el....
Próbáltam az int függvénnyel kezdeni valamit, de ugyanez lett a helyzet.. bár mondjuk az a stringet számmá alakítja, de egy próbát megért...
Gondolom azért mert indexelési hibát kapsz. Ha megszámolod a sorszámokat, 14-től a 0-ig, 15 darab szám lesz ott. A szöveg viszont csak 14 karakteres!
A c=14 és a b=0-val indítasz. Amikor azt írod hogy a[c-b] akkor az a[14-0] vagyis a[14]. Az "a" szövegben viszont csak 0 és 13 között tudod indexelni a betűket, vagyis az a[13] az utolsó betű, a[14]-re már "IndexError" kivételt dob.
Megoldás hogy a "b" változó kezdőértéke ne 0 legyen hanem 1, vagy a "c" legyen len(a)-1.
Mindig olvasd el a hibaüzenetet mert megmondja mi a hiba!
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!