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...
Áhhh.... *-*
Ezer köszönet... :D
Működik.. :D
Ilyen lett..
a="mindegymicsoda"
b=1
c=len(a)
while b<=c:
....print (a[c-b],end="",flush=True)
....b=b+1
Egyébként, csak akkor válaszolj, ha tényleg nem zavarlak. :D
Van egy feladat:
. Az előző gyakorlatból kiindulva írjon egy scriptet, ami meghatározza, hogy egy
karakterlánc palindrom e (vagyis ami mindkét irányból olvasva ugyan az), mint például
« radar » vagy « sós »
Na, el is készítettem a dolgot:
a="tarrat"
b = len(a)
c=-1
d=0
while a[d] == a[c]:
d=d+1
c=c-1
if a[d]==a[c]:
print ("true")
else: print("false")
Működik, de ha a szó visszafelé is ugyanaz, akkor ötször (6 betűs szó) írja ki, hogy "true".
Ha nem az a szó, akkor csak egyszer, hogy "false" ezzel nincs baj.
Meglehetne oldani, hogy csak egyszer írja ki?
Valami olyanra gondoltam, hogyha a[d] minden tagja megegyezik a[c]-vel akkor írja ki, hogy true... csak nem ismerem a parancsot.... >.>
a="tarrat"
b = len(a)
c=-1
d=0
while a[d] == a[c]:
....d=d+1
....c=c-1
....if a[d]==a[c]:
........print ("true")
....else: print("false")
Így akartam leírni...
Az előző feladat alapján úgy lehetne megoldani hogy megfordítod a szót, és megnézed e hogy egyezik e az eredetivel:
szo = "radar"
szo2 = ""
<- ide beilleszted az előző kódod csak print helyett a szo2-höz fűzöd mindig hozzá a betűket
if szo == szo2:
. . print("true")
else
. . print("false")
Nálad most minden alkalommal kiírja hogy true ha talál egyező betűt és false ha talál nem egyezőt. A cikluson kívülre kéne tenni a kiírást, cikluson belül csak meg kell jegyezni hogy igaz e vagy hamis.
Ekkor így néz ki:
szo = "tarrat"
hossz = len(szo)
palindrom = "true"
i = 0
while i < hossz:
. . if szo[i] != szo[hossz-1-i]:
. . . . palindrom = "false"
. . i = i + 1
print(palindrom)
Csak akkor legyen true a kiírt szöveg ha soha nem szalad be a false ágba, mert ha beleszalad, akkor már tudjuk hogy nem palindrom.
Nem tudom hogy tanultad e a break, continue és else szavakat a while ciklusnál de hatékonyabb megoldás ez:
szo = "tarrat"
hossz = len(szo)
i = 0
while i < hossz:
. . if szo[i] != szo[hossz-1-i]:
. . . . print("false")
. . . . break
. . i = i + 1
else:
. . print("true")
Ha belép a false ágba, kiírja hogy false majd kilép a ciklusból, nem kell tovább futnia ha tudjuk hogy már úgysem lesz igaz hogy palindrom. Ha lefut a ciklus anélkül hogy elérne egy break-et akkor belé az else ágba és kiírja true.
A break, continuet még nem tanultam. Remélem hamarosan eljutok odáig is. :D
Köszönöm a segítséget megint. Így már értem.... még tegnapelőtt megcsináltam ezt a feladatot háromféleképpen, de csak azonos hosszúságú szóknál működött volna a feladat..
Így már minden világos...
(Ha nagyon elakadnék írok, ha nem zavar... :D)
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!