elikkäs tehtävänä olisi tuottaa python ohjelma joka laskee cooper tuloksen. pitää antaa 1.kierrosaika sekä hidastuvuus seuraaville kieroksille.mitenkäs tämä tehdään
apua tehtävään
neito7
5228
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 5
Vanhimmat
Olen juuri tekemässä tällaista mutta se on mahdottomuus yhdellä kieroksella joten se on 2 kierrosta, ajattelin laittaa sen nettiin myyntiin mutta sinähän voisit kokeilla sitä puolestani. (se on puhelin sovellus vain Windows puhelimille) sopiiko?
Pitäisi tietää se, mitä tarkoitat hidastuvuudella. Tuleeko kierrosajoista vaikkapa aritmeettinen tai geometrinen jono? Kun tämä on selvillä, niin while-luuppi auttanee. Tai jos kierrosmäärän pystyy päättelemään hidastuvuudesta, niin for-luuppi on käypä vaihtoehto.
Tuon voi tehdä monella tavalla. Tässä yksi ratkaisu joka käyttää rekursiota. Rekursion voi korvata silmukoinnilla ja jätetään se kotitehtäväksi :)
def cooperi(kierrosaika, hidastuvuus, jaljella=12*60, radan_pituus=400): """Laskee cooperin tuloksen ensimmäiseen kierrokseen käytetyn ajan ja hidastuvuuden perusteella kierrosaika: ensimmäiseen kierrokseen käytetty aika sekunteina hidastuvuus: kerroin kuinka paljon enemmän aina seuraavaan kierokseen kuluu aikaa Palauttaa cooper testin aikana kuljetun matkan metreinä """ if jaljella > kierrosaika: return radan_pituus cooperi(kierrosaika*hidastuvuus, hidastuvuus, jaljella-kierrosaika, radan_pituus) else: return float(jaljella)/kierrosaika * radan_pituus
ps. toivottavasti ei mennyt ihan sillisalaatiksi suomi24:ssä. Korvasin erikoismerkit html entiteeteillä.. tai ainakin tarkoitus oli!
pps. radan pituus on nyt turhaa temppuilua. Tehtävässä sitä ei mainittu joten se voisi olla kai mitä tahansa? standardi juoksuradan pituus on kuitenkin tuo 400 metriä..
no tuiksihan se meni. Kyllä tuosta kai sen verran selvän saa että osaa korjata sisennykset itse.
>>> cooperi(90, 1.25)
1966.08
>>> cooperi(85, 1.15)
2343.689722747292
>>> cooperi(67, 1.34)
2090.7680047235444
>>> cooperi(60, 1.09)
3395.0304965304795
Lisätään nyt pikku selitystä miten saat tuon ongelman ratkottua silmukalla.
* Teet silmukan jota suoritat niin kauan kun on aikaa jäljellä (while).
* Joka kierroksella päivität kierroksen juoksemiseen kuluvaa aikaa, cooperissa jäljellä olevaa aikaa ja jo juostua matkaa.
* jos aikaa on jäljellä enemmän kuin koko kierrokseen menee, lisäät matkaan koko radan pituuden (400m)
* jos aikaa on jäljellä vähemmän kuin koko kierrokseen menee, lisäät matkaan sen osan radan pituudesta jonka jäljelläolevassa ajassa ehtii juosta