Выход из цикла и перечисления (Python) - PullRequest
0 голосов
/ 31 мая 2018

Я новичок в Python и работаю над проектом bootcamp ... и я делаю все сложнее, чем нужно ...

То, что я в конечном итоге собираюсь сделать, этосоздайте следующее:

  1. Имя: Титаник \ n Режиссер: Спилберг \ n Год: 1997 \ n \ n

  2. Имя: Матрица \n Режиссер: Васьковскис \ n Год: 1996 \ n \ n

ПОСЛЕ Я добавил их с помощью функции "(A) dd Movie ... Итакво-первых, я не могу «выйти» из цикла For Loop ... как только я его запустил, он просто повторяется бесконечно ... и кроме того, я не могу получить правильное форматирование, если я пытаюсь использовать "перечислите ".

Вот мой код: (часть, о которой я говорю, находится под функцией" def show_movies ":

import sys
import random
import os
movies = []


def menu():
    global user_input
    print("Welcome to 'The Movie Program!!'")
    print("(A)dd movie to your list")
    print("(L)ist movies you've added")
    print("(S)earch for movies in your list")
    user_input = str(input("Which function would you like to do?:\n\n""Selection: ").capitalize())
    while user_input != 'Q':
        if user_input == 'A':
            add_movies()
        elif user_input == 'L':
            show_movies()
        elif user_input == 'A':
            search_movies()
        else:
            print("\n\n--Unknown command--Please try again.\n")
            print("Welcome to 'The Movie Program!!'")
            print("(A)dd movie to your list")
            print("(L)ist movies you've added")
            print("(S)earch for movies in your list")
            user_input = str(input("Which FUNCTION would you like to do?:\n\n""Selection: ").capitalize())


def add_movies():
    #name = (input('What is the title of the movie?: ').title())
    #director = str(input("Who was the director of this movie?: ").title())
    year = None
    while True:
        try:
            name = (input('What is the title of the movie?: ').title())
            director = str(input("Who was the director of this movie?: ").title())
            year = int(input("What was the release year?: "))
        except ValueError:
            print("Only numbers, please.")
            continue
        movies.append({
            "name": name,
            "director": director,
            "year": year
        })
        break
    menu()


    add_movies()


def show_movies():
        for movie in movies:
            print(f"Name: {movie['name']}")
            print(f"Director: {movie['director']}")
            print(f"Release Year: {movie['year']}\n")
            #continue
            #break


def search_movies():
    movies
    print("This is where you'd see a list of movies in your database")


menu()

1 Ответ

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

Проблема в вашем цикле while user_input != 'Q':.

Если user_input равен L, то он вызывает show_movies(), но не запрашивает больше ввода.Он просто вращается вокруг цикла while, каждый раз вызывая show_movies().

Вы должны вводить user_input снова каждый раз через цикл, а не только в предложении else.

while user_input != 'Q':
    if user_input == 'A':
        add_movies()
    elif user_input == 'L':
        show_movies()
    elif user_input == 'A':
        search_movies()
    else:
        print("\n\n--Unknown command--Please try again.\n")
        print("Welcome to 'The Movie Program!!'")
        print("(A)dd movie to your list")
        print("(L)ist movies you've added")
        print("(S)earch for movies in your list")
    # the next line is now outside your `else` clause
    user_input = str(input("Which FUNCTION would you like to do?:\n\nSelection: ").capitalize())
...