Elkezdtem szabadidőmben programozást tanulni a "Tanuljunk meg programozni Python nyelven" című könyvből. Viszont van egy feladat, amit nem tudok megcsinálni (sajnos eléggé az elején már). Szerintetek mi a megoldás? Alább a feladat -->
4.3-as gyakorlat:
Írjon egy programot, ami euróban kifejezett pénzösszegeket kanadai dollárba vált át és az eredményt egy táblázatban írja ki. A táblázatban a pénzösszegek <<geometriai haladvány>> szerint növekedjenek úgy, mint az alábbi példán:
1 euro = 1.65 dollár
2 euro = 3.30 dollár
4 euro = 6.60 dollár
8 euro = 13.20 dollár
stb.(16384 euronál kell megállni)
Na most.. én ezen rengeteget törtem a fejem, de nem jutottam semmire. Valaki le tudná ezt a feladatot vezetni nekem, hogy okulhassak belőle? Tudom, hogy a programozás arról is szól, hogy törjük a fejecskénket és magunk jöjjünk rá a dolgokra (hogy az agyunk ráálljon valóban a programozás nyelvére), de itt én nagyon elakadtam. Előre is köszönöm a segítséget :) .
Van egy while ciklusod, ennek a feltételében van az, hogy 16384-nél kell megállni.
Van egy, a ciklus előtt deklarált változód, 1 kezdőértékkel, amit minden ciklus végén megduplázol.
Van egy függvényed, ami átváltja az eurót kanadai dollárba.
A ciklus belsejében a duplázás előtt mindig kiíratod a szöveget.
Nem nagyon tudom, hogy mi okozza a gondot.
Ehhez a feladathoz 3 dolog kell:
-Szorzás
-For ciklus
-Konzolra írás
Ezek közül melyik okozza a gondot?
A feladat 3 részfeladatra bontható ahogy azt már fentebb is írták:
1.
Ki kell tudnod írni a konzolra egy szöveget:
"{} euro = {} dollár"
2.
Be kell tudnod helyettesíteni a szövegbe a megfelelő értékeket:
- Bal oldat a kettő hatványai vannak: 2**i
- Jobb oldalt ennek konstans szorosa: 1.65 * 2**i
3/a.
Tudnod kell csinálni egy ciklust ami a fentebb használt "i" ciklusváltozót lépteti addig, amíg el nem éred a 16384 eurót. Pl.: for i in range(0,15)
3/b.
Lehet ezt úgy is hogy egy while ciklussal mindig felszorzod a ciklusváltozód 2-vel amíg el nem éri a 16384 értéket:
n = 1
while n <= 16384:
. . kiír
. . n = n * 2
Először is köszönöm mindenkinek a gyors válaszokat! Másrészről hozzá kell tennem, hogy a könyv tematikája miatt én még nem ismerem a "For ciklust". Viszont attól függetlenül sokat segítettetek. Mutatom az én verziómat.
>>> a,b=1,1.65
>>> while a<=16384:
a=a*2
b=b*2
print (a, "euro=", b, "dollár")
2 euro= 3.3 dollár
4 euro= 6.6 dollár
8 euro= 13.2 dollár
16 euro= 26.4 dollár
32 euro= 52.8 dollár
64 euro= 105.6 dollár
128 euro= 211.2 dollár
256 euro= 422.4 dollár
512 euro= 844.8 dollár
1024 euro= 1689.6 dollár
2048 euro= 3379.2 dollár
4096 euro= 6758.4 dollár
8192 euro= 13516.8 dollár
16384 euro= 27033.6 dollár
32768 euro= 54067.2 dollár
Ezzel az a baj, hogy nem 1 euronál kezd, hanem 2-nél és nem 16384-nél végződik, hanem eggyel tovább lép. Mit rontottam el? Bármely építő jellegű kritikát szívesen fogadok :D. Tényleg tök kezdő vagyok, viszont már azzal is madarat lehetne velem fogatni, hogy idáig eljutottam.. nagyon tetszik a dolog :D!
Ha a könyv tematikája olyan, hogy a ciklusokat még nem tárgyalja, de kiajánl egy ilyen feladatot akkor:
a: a könyv kukába való (amire kisebb a valószinűség)
b: a feladatot ciklus nélkül kellene megoldani (ez utóbbi valószinűsége elég magas)
Konklúzió: Megismerkedtél a ciklus fogalmával, rendeltetésével, ami tiszta nyereség.
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!