关于斐波那契序列生成器的问题-没有打印



我在课堂上被分配了一个任务,我需要编写一个可以生成"n"个Fibonacci序列数的算法。我觉得这段代码应该可以工作,但我仍然很难找到阻止它工作的错误。该算法应该从数字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 "0n1n1"
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)

此修复看起来很简单。while循环中的分组是错误的,将其更改为以下内容,它应该可以正常工作:

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

最新更新