Python 主功能未运行?困惑的

Python 主功能未运行?困惑的,python,main,fibonacci,Python,Main,Fibonacci,我试图为一个类编写一个模块,但我的主函数不起作用。我假定代码是正确的,但当我输入一个数字时,它只会进入下一行,不会停止执行,只允许我输入更多的数字,然后再进入下一行—无限 我涉足python的主要功能,但仍然感到困惑 # Uses python3 import sys def get_fibonacci_last_digit_naive(n): if n <= 1: return n previous = 0 current = 1

我试图为一个类编写一个模块,但我的主函数不起作用。我假定代码是正确的,但当我输入一个数字时,它只会进入下一行,不会停止执行,只允许我输入更多的数字,然后再进入下一行—无限

我涉足python的主要功能,但仍然感到困惑

# Uses python3
import sys

def get_fibonacci_last_digit_naive(n):
    if n <= 1:
        return n

    previous = 0
    current  = 1

    for _ in range(n - 1):
        previous, current = current, previous + current

    return current % 10
def fast_fibL(b):
    a = []
    a.append(0)
    a.append(1)
    n = 0
    if (b == 0):
        return 0

    if (b == 1):
        return 1

    for i in range(b):
        c = a[i] + a[i + 1]
        a.append(c)
        n += 1

    return(a[n])

def get_fib_last_digit_fast(e):
    b = fast_fibL(e)
    return b % 10

def main():
    input = sys.stdin.read()
    n = int(input)
    print(get_fib_last_digit_fast(n))

if __name__ == '__main__':
    main()
我希望代码返回输入的第n个斐波那契数的最后一位数字

使用以下命令代替input=sys.stdin.read:


程序正在等待您的输入,因为您正在使用stdin.read。这将等待输入被终止,例如按下ctrl-D。 通常你会用这个,它从标准输入中读取一行

def main():
    line = input('> ')
    n = int(line)
    print(get_fib_last_digit_fast(n))
您不想在此处使用sys.stdin.read。。。它将一直读取,直到到达文件EOF的末尾。enter键并不表示文件的结束,只表示新行的开始。您可以尝试sys.stdin.readline,也可以使用内置函数输入,假设您使用的是Python 3。
def main():
    line = input('> ')
    n = int(line)
    print(get_fib_last_digit_fast(n))