2015-06-03 4 views
-5

Имя функции: p rintFibonacci() Ваша задача - написать функцию, которая принимает два параметра и выводит последовательность Фибоначчи (в той же строке, разделенной запятыми!), Используя эти параметры. Последовательность Fibonacci получается путем добавления двух предыдущих чисел вместе для получения следующего целого числа. Два параметра, которые вводятся пользователем, будут первыми двумя номерами, которые вы добавляете, чтобы начать свою последовательность. Функция должна останавливаться, когда последний номер напечатан более 300. Помните, что цифры должны быть напечатаны в одной строке с разделяющими их запятыми. Это нормально, если вывод обтекает новую строку. Ключ в том, что вы печатаете одну строку. Вам не нужно печатать параметры как часть вашего вывода. Вы также можете предположить, что пользователь всегда будет вводить не менее 1 ненулевой параметр.как распечатать фибоначчи в этом формате?

Он должен выглядеть следующим образом:

>>> printFibonacci(1,9) 
10,19,29,48,77,125,202,327 
>>> printFibonacci(2,3) 
5,8,13,21,34,55,89,144,233,377 
python>>> printFibonacci(1,1) 
2,3,5,8,13,21,34,55,89,144,233,377 

до сих пор у меня есть этот

def printFibonacci(a,b): 
    count = 0 
    max_count = 10 
    while count < max_count: 
     count = count + 1 
     old_a = a 
     old_b = b 
     a = old_b 
     b = old_a + old_b 
     print (old_a) 

но не печатает в одной строке с запятые, и я не знаю, как это остановить на 300.

Хорошо, так что я работал на него, и теперь у меня есть это, который работает намного лучше:

def printFibonacci(a,b): 
count = 0 
maxnumber = 299 
while b < 200: 
    begin = a+b 
    a , b = b , begin 
    start = a 
    end = b 
    print ((start)+ (end),end=",") 

У меня есть только две проблемы: одна из них печатает кому в конце строки, как я могу избавиться от нее? а также первое число дано мне уже сумма первых двух, а не два параметра

+2

Вы должны попытаться решить это самостоятельно перед публикацией здесь. Попытайтесь решить проблему и опубликуйте здесь, если у вас возникнут проблемы, которые вы не можете решить самостоятельно после разумного устранения неполадок. – Raniz

+2

* Ваша * работа - сделать свою домашнюю работу и написать эту функцию. Мы поможем, если вы застрянете, но мы не будем делать домашнее задание для вас. –

+1

Вниз проголосовали за то, что в здание не было предпринято никаких усилий или найти решение – JGerulskis

ответ

-1

Обычно ФИБОНАЧЧИ проблемы типа наиболее легко решается с помощью рекурсии:

def printFibonacci(x,y): 

    if y > 300: 
     return 
    z = x + y 
    print z, 
    printFibonacci(y,z) 
    return 
2

Сделайте свою собственную домашнюю работу! (Не отправляйте это решение, оно, вероятно, использует понятия, которые вы еще не изучили).

#!/usr/bin/env python2.7 

def printFibonacci(a, b): 
    while b < 300: 
     a, b = b, a+b 
     yield b 

def main(): 
    tests = [(1, 9), (2, 3), (1, 1)] 
    for test in tests: 
     print ', '.join(str(n) for n in printFibonacci(*test)) 

if __name__ == '__main__': 
    main() 

Выход:

10, 19, 29, 48, 77, 125, 202, 327

5, 8, 13, 21, 34, 55, 89, 144, 233, 377

2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377

+0

Я что-то изменил в своем коде, вы можете мне помочь? – Mary

+0

Ничего себе! Посмотрите, что вы сделали, просто пытаясь! Теперь для окончательной настройки ... Я удалил '' count'', '' maxnumber'', '' begin'', '' start'' и '' end'', потому что вы не использовали эти переменные. Затем я исправил опечатку в вашем состоянии цикла while (вы написали 200, но я почти уверен, что вы хотели написать 300). И, наконец, вместо того, чтобы печатать '' a + b'', я сделал печать только '' b''. Остальная часть кода - все ваше! Congrats! Вот мой пастебин (http://pastebin.com/fKGRAc36) с моими исправлениями. – pzp

0

Я также изучение Python. Я не в классе или что-то еще, но не стесняйтесь просматривать код и давать мне обратную связь.

#!/usr/bin/python 
#fib.py 

#array to hold series of fib numbers 
fibSequence = [] 

#expects two integers, the lesser number first 
def printFibonacci(lesserNumber, greaterNumber): 
    #access the array declared outside the function 
    global fibSequence 

    #check if the list is empty; if it is then start it 
    if not fibSequence: 
     fibSequence=[lesserNumber, greaterNumber] 

    #the next number in the sequence will be the sum of the two parameters 
    sumNumber = lesserNumber + greaterNumber 

    if greaterNumber> 300: 
     print ",".join(str(i) for i in fibSequence) 
    else: 
     #add the summed number to the list that will eventually be our answer 
     fibSequence.append(sumNumber) 
     #call the function again, this time with the formerly greatest number as the smaller number 
     printFibonacci(greaterNumber, sumNumber) 

#call the function for the first time 
printFibonacci(2,3) 
+1

Старайтесь избегать использования '' global''. Это приведет к проблемам в будущем. – pzp

Смежные вопросы