Основная функция не работает?СМУЩЕННЫЙ - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь запрограммировать модуль для класса, но моя функция main () не работает, я предполагаю, что код верен, но когда я ввожу число, оно просто переходит на следующую строку, не останавливает выполнение и просто позволяет мнедля ввода дальнейших чисел, переходя к следующей строке после - до бесконечности.

Я вхожу в основную функцию 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-го введенного числа Фибоначчи.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Программа ожидает вашего ввода, так как вы используете stdin.read().Это ожидает, пока ввод не будет завершен (например) нажатием ctrl-D.Обычно для этого вы используете input(), который читает одну строку из стандартного ввода.

def main():
    line = input('> ')
    n = int(line)
    print(get_fib_last_digit_fast(n))
0 голосов
/ 11 февраля 2019

Вместо input = sys.stdin.read() используйте встроенную функцию input() :

def main():
    n = int(input('Enter an integer: '))
    print(get_fib_last_digit_fast(n))
...