Найти - Пользователи
Полная версия: Числа Фибоначчи
Начало » Python для новичков » Числа Фибоначчи
1 2
breidos
Вот у меня есть такая часть кода:
# -*- coding: cp1251 -*-
n = input("Введите последнее число дапозона ряда Фиббоначи: ")
def fib(n):
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
Хочу выполнить такое условие: “Введенное число должно быть целым и больше 0”. Но он ничего не выводит. В каком месте я ошибся?
if n==int: print "Введенное число должно быть целым и больше 0"
else:
fib(n)
Можно было бы просто написать так:
# -*- coding: cp1251 -*-
def fib(n):
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
n = int(input("Введите последнее число дапозона ряда Фиббоначи: "))
if n<0: print "Введенное число должно быть целым и больше 0"
else:
fib(n)
Но вот как как можно сделать, чтобы при введении числа с запятой вышло сообщение?
А еще можно как нибудь отловить нажатие определнных клавиш/кнопок?
igor.kaist
breidos
Хочу выполнить такое условие: “Введенное число должно быть целым и больше 0”
Вы пытались сравнить “тип” с числом.
Посмотрите
>>> a=15
>>> a
15
>>> type(a)
<type 'int'>
>>> int
<type 'int'>
Сравнивайте тип с типом:
if type(a)==int and a>0
pyuser
igor.kaist
if type(a)==int and a>0
наверно идеологически правильнее будет использовать isinstance :)
breidos
Вот у меня есть такой код:
# -*- coding: cp1251 -*-
def fib(n):
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
c=0
d=1
while c!=d:
n = input("Введите последнее число дапозона ряда Фиббоначи: ")
if type(n)==int and n>0:
fib(n)
c=1
else:
print "Введенное число должно быть целым и больше 0"
Подскажите, как сделать так, чтобы в строке выводилось по 5 чисел. Ну т.е. если введем в коде 200, то должно получиться:

1 1 2 3 5
8 13 21 34 55
89 144
qweqwe
я в этом случае добавил
f=fib2(1000)
d=len(f)
x,y=0,5
while x<=d:
print f[x:y]
x,y=x+5,y+5
не самый лучший вариант =) но по другому пока не умею
maxwell
На вскидку:
def fibonacci():
a, b = 0, 1
while 1:
yield b
a, b = b, a+b


def fibonacci_print(range):
f = fibonacci()
current_number = f.next()
c = 1
while current_number <= range:
if c % 5:
print current_number,
else:
print current_number
c += 1
current_number = f.next()
В офф доках по генераторам отличный пример и как раз про числа Фибоначи.

Далее.
c=0
d=1
while c!=d:
смело меняем на что-то вроде:
while True:
if <condition>:
break;
И настоятельно рекомендую не мешать в кучу вывод и расчёты.
Pytophone
Почему не работает такая система?
while b<10:
	print (b)
	a=b
	b=a+b
dimy44
Если начальное значение b задано не меньше 10, то цикл ни разу не выполнится, иначе всё работает
Pytophone
Это неправильное решение, ибо надо, по моему мнению вводить третью переменную.
>>> a=0
>>> b=1
>>> while b<10:
	print (b)
	a=b
	b=a+b
	
1
2
4
8
>>> 

В итоге нашел решение с третьей переменной:
>>> a=0
>>> b=1
>>> c=0
>>> while b<10:
	c=a+b
	a=b
	b=c
	print(c)

Это самый короткий вариант.
Aris_P@
a,b=b,a+b
это не тоже самое, что и
a=b
b=a+b
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB