PYTHON datoteke - reševanje zgleda

PYTHON datoteke - reševanje zgleda

Avtor: Saša Kožuh

Učni cilji: Gradnja rešitve v pythonu. Delo z datotekami.

Besedilo naloge

Sestavi metodo, ki v tekstovno datoteko Stevila.txt zapiše prvih n sodih števil, ki niso deljiva s šest. Števila izpišimo ločena z znakom '/', torej na primer kot:

2/4/8/10/14/16/20/22/

Strategija rešitve 1

Osredotočimo se na del, kjer moramo pripraviti soda števila, ki niso deljiva s 6.

Soda števila
Soda števila so tista, ki pri deljenju z dve ne dajo ostanka. Torej izpolnjujejo pogoj:
stevilo%2 == 0

Števila, ki niso deljiva s 6
Najlažje morebiti razumemo ta pogoj, če najprej poiščemo pogoj za tista števila, ki so deljiva s 6 in ga potem samo zanikamo. Število je deljivo s 6, takrat ko pri deljenju števila s 6 ni ostanka.
stevilo%6 == 0
Torej je dovolj, če ta pogoj zanikamo.
stevilo%6 != 0

Če sedaj oba pogoja združimo tako, da veljata hkrati. Število, ki ga iščemo mora zadostiti obema pogojema.
stevilo%2 == 0 and stevilo%6 != 0

Strategija rešitve 2

Če sedaj pomislimo kako bomo prišli do števil. Torej uporabnik bo s klicem metode povedal koliko števil ki so deljiva z dve in niso s šet želimo poiskati. Že sama ideja, da iščemo določeno število nekih števil, napelje na zanko, kjer bomo vsakič preverili, če števec ustraza pogoju. Dejansko bomo imeli dva števca, enega (i) ki se bo povečal vsakič, ko bomo izvedli zanko, drugi (i) pa se bo povečal le takrat, ko bomo našli ustrezno število in ga zapisali v datoteko. Če števec (i) ne bo ustrezal bomo zanko le ponovili. Pri tem je treba paziti, da ne pozabimo na koncu zanke števec povečati.

odpremo datoteko
i = 1
j = 0
while j <= n : #kjer je n število, ki ga poda uporabnik
---if i%2 == 0 and i%6 != 0 : #preverjamo če števec zadosti pogoju
------zapisemo v datoteko
------j = j + 1 #našli smo število ga zapisali in povečali števec najdenih števil
---i = i + 1
zapremo datoteko


Sedaj imamo rešitev že skoraj v celoti domišljeno, manjka le še del z odpiranjem datoteke, vpisom vanjo in seveda na koncu še zapisanjem datoteke.

Rešitev

0%
0%