2014-11-05 2 views
-2

Так что я эту функцию и следующий код:номера печати в строке через запятую

def fib(): 
    first, second = 0, 1 

    start = int(input("Please input the desired number ")) 
    for i in range(start): 

     second=first+second 
     first=second-first 

     yield first+second 

line = "" 
for i in fib(): 
    line += str(i) 
print(line) 

То, что я пытаюсь сделать, это напечатать числа Фибоначчи в одной строке, разделенных запятыми. Как я это сделаю?

+0

Python 2.x или 3.x? Что вы пробовали, и в чем проблема? Какие результаты вы получаете и как они отличаются от того, что вы хотите? – jonrsharpe

ответ

1

Вызов fib, преобразовать его в список, и распечатать результат.

print(list(fib())) 

Выход:

Please input the desired number 5 
[2, 3, 5, 8, 13] 

Если вам не нравится, кронштейны, вы можете преобразовать список в строку и лишить их.

print(str(list(fib())).strip("[]")) 
#output: 2, 3, 5, 8, 13 

... Но в этом нет особого смысла.

+0

Он отлично работал! Спасибо. – Leo

-1

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

def fib(): 
    first, second = 0, 1 

    for i in range(start): 

     second=first+second 
     first=second-first 

     yield first 

Вы также хотите задать для ввода пользователя из внешней функции:

start = int(input("Please input the desired number ")) 

Теперь вы можете добавить число Фибоначчи к списку и печати к ним присоединяется «,», когда вы достигаете количества раз, указанного пользователем.

line = [] 
line_app = line.append 
fib = fib() 


for i in range(start): 
    line_app(str(next(fib))) 

print(", ".join(line)) 

РЕДАКТИРОВАТЬ:

Вход 1:

Please input the desired number 4 

Выход 1:

1, 1, 2, 3 

вход 2:

Please input the desired number 7 

Выход 2:

1, 1, 2, 3, 5, 8, 13 
+0

Почему 'line_app = line.append'? Почему бы просто не использовать 'line.append' напрямую? – Kevin

+0

Это оптимизация. Вы можете проверить это здесь: https: //wiki.python.org/moin/PythonSpeed/PerformanceTips#Avoiding_dots ... –

+0

Я не знаю, почему так много отрицательных голосов ... Никто, кроме @ Кевина, оставил отзыв комментарий. –

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