Вопрос о генераторе последовательности Фибоначчи - ничего не печатает - PullRequest
0 голосов
/ 22 ноября 2018

Мне дали помощника в моем классе, где мне нужно написать алгоритм, который может генерировать "n" чисел последовательности Фибоначчи.Я чувствую, что этот код должен работать, но я все еще не могу определить, какая ошибка мешает ему работать.Алгоритм должен начать печатать последовательность Фибоначчи, начиная с номера 2 (первые 3 числа исправлены), но он печатает только первые 3 числа, и мой алгоритм ничего не печатает.У меня даже есть сложная проверка ошибок, которая должна исключать неверные значения, но она также ничего не сообщает.

#/usr/bin/python

import re
import math
import time
import sys

def errchk(hwmny,int1,int2,int3,int4,errcnt):
    #Sanity check; first 12 numbers don't have 6's
    expression = re.compile(r"^[^6]{1,3}", re.I | re.S) #expression for no sixes
    if expression.match(str(int3)):     # if it doesn't match
        return                      # return
    else:                           #otherwise
        if (hwmny > 12):        # as long as it's less than 12
            return          # no errors
        zints.err()         #but ifnot, errors
    return None

def nofloats():
    return math.floor(zints.int3)

class zeroints:
    int3=int4 = 0   #int3 and int4 are 0
    errcnt = 0  #count the number of errors
    def err(self):
        print "Errors"
        return

hwmny =15       #hwmny variable is 10
int1 =int2 =1       #int1 and int2 are 1
zints = zeroints()  #ints init'd to 0
print "0\n1\n1"

def loop(hwmny,int1,int2,int3,int4,errcnt):
    while(((zints.int4<hwmny)or not(zints.int4>0))and not(zints.int4==0)):  #while int4 is less than hwmny and error checking
        zints.int3 =int1+ int2          #int3 is int1 plus int2
        int1 =int2              #int1 is int2
        string = 'The Values Are'       #string is set to 'The Values Are'
        int2= zints.int3            #int2 is int3
        errchk(hwmny,int1,int2,zints.int3,zints.int4,zints.errcnt)
        print zints.int3            #print int3
        zints.int4= zints.int4+1        #int4 is int4 plus 1
        loop(hwmny,int1,int2,zints.int3,zints.int4,zints.errcnt)
        continue

loop(hwmny,int1,int2,zints.int3,zints.int4,zints.errcnt)

1 Ответ

0 голосов
/ 22 ноября 2018

Это исправление выглядит просто.Неправильная группировка в цикле while, измените его на следующее, и оно должно работать нормально:

while((zints.int4<hwmny)or not(zints.int4>0)and not(zints.int4==0)):
...