문제

Fibonacci 시퀀스의 n 번째를 생성하기 위해 일부 코드를 발견하고 편집했지만 내 문제는 그래픽 창에 표시하는 것입니다.

from graphics import *



def main():

    win = GraphWin("Sample Input", 300, 300)

    win.setCoords(0,0, 299, 299) # not required, just convenient



    input_prompt = Text(Point(150, 200),"Enter a positive integer")

    input_prompt.setStyle('bold italic') # not required, just convenient

    input_prompt.draw(win)



    input_integer = Entry(Point(150, 150),5)

    input_integer.setText("    ")

    input_integer.draw(win)



    win.getMouse()



    integer_number = int(input_integer.getText())  # the very line that does the input!



    running_count = 0

    for x in range(1, integer_number + 1):

        running_count = running_count + x

        def factorial(n):
            if n == 1:
                return n
            else:
                return n*factorial(n-1)

        def fibN( k ):
            k = abs( int( k ))
            if k == 0:
                fib = 0
            elif k == 1:
                fib = 1
            else:
                counter = 2  
                f0 = 0
                f1 = 1
                fib = f0 + f1
                while counter <= k:
                    fib = f0 + f1
                    f0 = f1
                    f1 = fib
                    counter += 1
            print(fib)

        fib_result = "Fibonacci", "term", "of", integer_number, "is", fibN(integer_number)

        prompt = Text(Point(150, 50), fib_result)

        prompt.draw(win) 

    result_string = "The number is "+str(running_count)+"."

#     Text objects require a string, not a number

    result = Text(Point(150, 100), result_string)

    result.draw(win)

    factorial_result = "Factorial", "of",integer_number, "is", factorial(integer_number) #brackets displayed, separated factorial, of

    prompt = Text(Point(150, 75), factorial_result)

    prompt.draw(win)      

    prompt = Text(Point(150, 25),"Click to end")

    prompt.draw(win)

    win.getMouse()

    win.close()



main()
.

그것은 그것을 인쇄하고, fibonacci 용어가 "none"인 창에 표시됩니다.인쇄 된 번호가 올바른 것입니다.인쇄 된 번호를 표시하려면 어떻게 변경할 수 있습니까?

도움이 되었습니까?

해결책

FIBN 함수는 아무 것도 반환하지 않습니다 :

def fibN( k ):
        k = abs( int( k ))
        if k == 0:
            fib = 0
        elif k == 1:
            fib = 1
        else:
            counter = 2  
            f0 = 0
            f1 = 1
            fib = f0 + f1
            while counter <= k:
                fib = f0 + f1
                f0 = f1
                f1 = fib
                counter += 1
        print(fib) #this only puts the output on the screen
.

함수 출력 (there fib)의 경우 호출을 대체하려면 return fib :

 def fibN( k ):
        k = abs( int( k ))
        if k == 0:
            fib = 0
        elif k == 1:
            fib = 1
        else:
            counter = 2  
            f0 = 0
            f1 = 1
            fib = f0 + f1
            while counter <= k:
                fib = f0 + f1
                f0 = f1
                f1 = fib
                counter += 1
        return fib
.

다음을 원한다면 print(fibN(something))를 수행 할 수 있지만 현재 작업하는 것처럼 그래픽에서 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top