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)
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)
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.