Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Silmukkaan tietty määrä kierroksia?

Tuiske [06.11.2015 21:45:46]

#

Eli minun pitäisi tehdä ohjelmoinnin kurssia varten ohjelma, joka syöttää fibonaccin lukujonon lukuja halutun määrän, esim. 1, 2, 3, 5, 8, 13... Ohjelman tulisi ensin kysyä, montako lukua lisää käyttäjä haluaa, sitten laskea tarvittava määrä lukuja ja lopuksi tulostaa pääohjelmassa luvut allekkain. Ongelmana on kuitenkin se, etten tiedä, kuinka saisin ohjelman tekemään juuri käyttäjän haluaman määrän lukuja.
Muitakin neuvoja saa toki antaa!

import math
print("Fibonaccin lukujono alkaa luvuilla 0 ja 1.")

kehoite = "Montako lukua generoidaan lisää? "
virheilmoitus = "Anna vastauksesi kokonaislukuna!"


def pyyda_syote(kehoite, virheilmoitus):
    while True:
        inputti = input(kehoite)
        try:
            n = int(inputti)
        except ValueError:
            print(virheilmoitus)
        else:
            break

    return n

n = pyyda_syote(kehoite, virheilmoitus) + 2

def generoi_fibonacci(n):
    lukujono = [0, 1]
    while True:
        b = lukujono[-1] + lukujono[-2]
        lukujono.append(b)
    return lukujono

for luku in generoi_fibonacci(n):
    print(luku)

Chiman [07.11.2015 11:59:45]

#

Tuiske kirjoitti:

Ongelmana on kuitenkin se, etten tiedä, kuinka saisin ohjelman tekemään juuri käyttäjän haluaman määrän lukuja.

Käyttämällä range-funktiota saat halutun määrän toistoja, esim. 5 näin:

n = 5
for i in range(n):
    print(i)

Metabolix [07.11.2015 14:08:18]

#

Ohjelman olennainen ongelma on siinä, että funktiossa generoi_fibonacci on loputon silmukka (while True), vaikka silmukan pitäisi laskea vain n lukua. Voit korjata silmukan joko Chimanin vinkin mukaan (for-silmukka ja range) tai laittamalla ehtoon Truen tilalle tarkistuksen, onko listalla alle n lukua.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta