Ошибка цикла простой программы Python - PullRequest
0 голосов
/ 15 мая 2018

Может ли кто-нибудь помочь мне увидеть, что происходит в этом?В конце я получаю сообщение об ошибке: «NameError: имя« age »не определено».Я просто вхожу в Python и программирую в целом, и не вижу, что изменить, чтобы исправить это.

import random

def greeting():
    print("Hi there, welcome to the world's simplest tv suggestion program!")
    print("")

def get_birth_year():
    birth_year = 0
    birth_year = (input("Please enter your year of birth: "))
    is_valid = is_year_valid(birth_year)
    while not is_valid:
        birth_year = input("Please enter a four digit year of birth: ")
        is_valid = is_year_valid(birth_year)
    birth_year = int(birth_year)
    return birth_year


def is_year_valid(birth_year):
    try:
        birth_year = int(birth_year)
        is_valid = True
    except ValueError:
        is_valid = False
    return is_valid


def calculate_age(birth_year):
    age = 0
    age = 2018 - birth_year
    return age


def show_rec_output(age):
    print("Based on your age, a good Netflix show for you to watch would be:")
    adult = ["Master of None", "Unbreakable Kimmy Schmidt", "Black Mirror", "Godless",
             "Dear White People", "Grace and Frankie", "Jessica Jones"]
    all_ages = ["The Crown", "The Great British Bake Off", "Jessica Jones",
                "Sherlock", "A Series of Unfortunate Events", "Big Mouth"]
    if age >= 18:
        print(random.choice(adult))
    else:
        print(random.choice(all_ages))


def another_rec():
    second_rec = ""
    second_rec = (input("Would you like another recommendation Y/N: "))
    while second_rec == str("Y"):
        show_rec_output(age)
        second_rec = (input("Would you like another recommendation? Y/N: "))
    else:
        print("Go make some popcorn!")


def main_module():
    greeting()
    birth_year = get_birth_year()
    age = calculate_age(birth_year)
    show_rec_output(age)
    another_rec()

main_module()

Для задания, которое я пытаюсь выполнить, требуется один фрагмент ввода, один фрагментвывод, два цикла, проверка ввода и все в модулях.

1 Ответ

0 голосов
/ 15 мая 2018

Проблема здесь:

def another_rec():
    second_rec = ""
    second_rec = (input("Would you like another recommendation Y/N: "))
    while second_rec == str("Y"):
        show_rec_output(age)

У вас нет age здесь, но вы все равно пытаетесь его использовать.

Чтобы исправить это, вы хотитесделать то же самое, что вы делаете с show_rec_output.Сначала добавьте параметр age в функцию another_rec:

def another_rec(age):

…, а затем передайте значение из main_module:

show_rec_output(age)
another_rec(age)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...