예제 #1
0
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """

    menu = ['Display albums list',
            'Delete album',
            'Add album',
            'Get albums by genre',
            'Display oldest album',
            'Display oldest album in selected genre'
            'Show genre statistics',
            'Display longest album',
            'Display total albums lenght'
            ]

    albums = file_handling.import_data()

    while True:
        display.print_command_result('Welcome in albums database app')
        display.print_command_result('Select an option')
        display.print_program_menu(menu)
예제 #2
0
def main():
    # importuje plik i zapisuje w lokalnej dla tego modułu liście
    albums_data = file_handling.import_data("albums_data.txt")
    working = True
    check = True
    text = ""
    # loopa zeby menu było wyświetlane non stop, nawet jesli ValueError to znaczy jesli input
    # nie bedzie int. text jest po to zeby wyswietlac okreslony komunikat w dowolnie wybranym miejscu
    # w przypadku dobrze wybranej opcji zamieniam text na pusty string zeby komunika nie byl wysiwetlany
    while working and check:
        try:
            display.print_program_menu([
                "Show table", "Delete album", "Display oldest album",
                "Get albums by genre", "What is the oldest album by genre",
                "For arrow keys navigation"
            ], text)
            choice = int(input("What is your choice?:"))
            if choice == 1:
                display.print_albums_list(albums_data)
                display.pause()
                text = ""
            elif choice == 2:
                display.print_albums_list(albums_data)
                artist = input("What is name of artist you want to delete: ")
                album_name = input(
                    "What is name of album you want to delete: ")
                delete_album_by_artist_and_album_name(albums_data, artist,
                                                      album_name)
                text = ""
            elif choice == 3:
                display.print_command_result(
                    music_reports.get_last_oldest(albums_data))
                text = ""
            elif choice == 4:
                try:
                    genre = input("What is the genre?: ")
                    display.print_albums_list(
                        music_reports.get_albums_by_genre(albums_data, genre))
                    display.pause()
                    text = ""
                except (ValueError, IndexError, TypeError):
                    text = "\033[41;33mNo such genre\33[m"
            elif choice == 5:
                try:
                    genre = input("What is the genre?: ")
                    display.print_command_result(
                        music_reports.get_last_oldest_of_genre(
                            albums_data, genre))
                    text = ""
                except (ValueError, IndexError, TypeError):
                    text = "\033[41;33mNo such genre\33[m"
            elif choice == 6:
                arow_nawigation_menu()
            elif choice == 0:
                display.clear()
                working = False
        except ValueError:
            text = "\033[41;33mGive proper number\33[m"
def do_option(user_option, albums):
    if user_option == "1":
        genre = get_genre()
        try:
            by_genre = music_reports.get_albums_by_genre(albums,genre)
            display.print_albums_list(by_genre)
            while True:
                try:
                    way_of_export = input("\nProvide mode a or w: \n")
                    file_handling.export_data(by_genre, "albums_kuba.txt", way_of_export)
                    break
                except ValueError:
                    display.print_command_result("Wrond mode!")
        except ValueError:
            display.print_command_result("There is no genre like yours!")


    if user_option == "2":
        longest_album = music_reports.get_longest_album(albums)
        display.print_command_result("The longest album is: ")
        display.print_album_info(longest_album)

    if user_option == "3":
        total_albums_length = music_reports.get_total_albums_length(albums)
        display.print_command_result(f"Total length of albums is: {total_albums_length}.")
def load_action(action, albums):
    if action == 1:
        genre = get_genre(albums)
        genre_albums = music_reports.get_albums_by_genre(albums, genre)
        display.print_albums_list(genre_albums)
    elif action == 2:
        longest_album = music_reports.get_longest_album(albums)
        display.print_album_info(longest_album)
    elif action == 3:
        total_length = str(music_reports.get_total_albums_length(albums))
        display.print_command_result(total_length)
    elif action == 0:
        return 0
    else:
        raise KeyError("Wrong input!")
예제 #5
0
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """
    is_program_working = True
    while is_program_working:
        display.print_program_menu(MAIN_MENU)
        try:
            choose_option()
        except ValueError as err:
            display.print_command_result(str(err))
예제 #6
0
def delete_album_by_artist_and_album_name(albums, artist, album_name):
    """
    Deletes album of given name by given artist from list and updates data file

    :param list albums: currently existing albums
    :param str artist: artist who recorded the album
    :param str album_name: name of album to be deleted

    :returns: updated albums' list
    :rtype: list
    """
    for i in albums:
        if artist in i and album_name in i:
            albums.remove(i)
            return albums
    display.print_command_result('Wrong artist or/and album name!')
    return albums
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """
    options = ["Exit","Get albums of chosen genre", "Get longest album", "Get total albums length"]
    display.print_program_menu(options)
    albums = get_file()
    user_option = None
    while user_option != "0":
        user_option = get_option()
        do_option(user_option, albums)
    display.print_command_result("That's everything, thank you!")
예제 #8
0
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """
    choose = None

    while choose != 5:

        commands = [
            'Get albums by genre', 'Qunatity of albums in each genre',
            'Get album with biggest value in length field',
            'Get last album with earliest release year',
            'Get last album with earliest release year in given genre', 'Exit'
        ]
        display.print_albums_list(albums)
        display.print_program_menu(commands)

        choose = int(input("Please provide your choose: "))
        message = commands[choose]
        display.print_command_result(message)
        if message == 'Get albums by genre':
            genre = input("Pleae provide a music genre: ")
            albums_data = music_reports.get_albums_by_genre(albums, genre)
            for album in albums_data:
                display.print_album_info(album)
        if message == 'Qunatity of albums in each genre':
            result = music_reports.get_genre_stats(albums)
            message = str(result)
            display.print_command_result(message)
        if message == 'Get album with biggest value in length field':
            albums_data = music_reports.get_longest_album(albums)
            for album in albums_data:
                display.print_album_info(album)
        if message == 'Get last album with earliest release year':
            albums_data = music_reports.get_last_oldest(albums)
            for album in albums_data:
                display.print_album_info(album)
        else:
            print("dupas")
예제 #9
0
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should have main loop of program that will end only
    when user choose an option from menu to close the program. It should repeat
    displaying menu and asking for input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """
    student_data = data.import_data_from_file('class_data.txt')
    while True:
        print("Hello to JERZYBOT. Please select Your option.")
        menu_commands = ["Create new student.", "Delete student.", "Select student.",
                        "Print all students.", "Quit."]
        display.print_program_menu(menu_commands)
        while True:
            users_choice = input("Choose:")
            if users_choice not in ["0", "1", "2", "3", "4"]:
                print("Please choose correct number.")
                continue
            else:
                break
        if users_choice == "0":
            print("Create new student. Available soon!")
        if users_choice == "1":
            print("Delete student.")
            uid = input("Choose id: ")
            for line in student_data:
                if line[0] == uid:
                    student_data.remove(line)
        if users_choice == "2":
            selected_student = input("Choose_student")
            for line in student_data:
                if line[0] == selected_student:
                    print(" ".join(line))
        if users_choice == "3":
            display.print_students_list(student_data)
        if users_choice == "4":
            quit()
        display.print_command_result(users_choice)
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """
    albums = get_albums()
    action = None
    while action != "0":
        menu_options()
        try:
            action = input("Select action: ")
            load_action(int(action), albums)
        except KeyError:
            display.print_command_result("No such action!")
        except ValueError:
            display.print_command_result("Please enter a number!")
    display.print_command_result("Goodbye!")
예제 #11
0
def choose_option():
    albums = file_handling.import_data()
    choose_option = get_inputs(['Enter option number: '])
    option = choose_option[0]
    if option == '0':
        add_album(albums)
    elif option == '1':
        remove_album(albums)
    elif option == '2':
        get_genre = get_inputs(['genre: '])
        try:
            display.print_albums_list(
                music_reports.get_albums_by_genre(albums, get_genre[0]))
        except ValueError as err:
            display.print_command_result(str(err))
    elif option == '3':
        display.print_album_info(music_reports.get_longest_album(albums))
    elif option == '4':
        total_albums_length = music_reports.get_total_albums_length(albums)
        display.print_command_result(
            f'Total albums length in mins: {total_albums_length}')
    elif option == '5':
        genre_stats = music_reports.get_genre_stats(albums)
        for genre_name, amount_of_albums in genre_stats.items():
            display.print_command_result(f'{genre_name}|{amount_of_albums}')
    elif option == '6':
        oldest_album = music_reports.get_last_oldest(albums)
        display.print_album_info(oldest_album)
    elif option == '7':
        get_genre = get_inputs(['genre: '])
        oldest_album_in_genre = music_reports.get_last_oldest_of_genre(
            albums, get_genre[0])
        display.print_album_info(oldest_album_in_genre)
    elif option == '8':
        sys.exit()
    else:
        raise ValueError("There is no such option")
예제 #12
0
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """
    menu_commands = [
        "Delete album", "Get albums by genre",
        "How many albums are in each genre",
        "Get last album with earliest release year",
        "Get last album with earliest release year in given genre",
        "Get longest album", "Get sum of lengths of all albums in minutes",
        "Quit program"
    ]

    while True:
        albums_data = file_handling.import_data(filename='albums_data.txt')
        display.print_command_result("Choose your option:")
        display.print_program_menu(menu_commands)
        choice = input("What would you like to do? ")
        if choice == "0":
            display.print_albums_list(albums_data)
            artist = input("Which artist would you like to remove?")
            album_name = input("Which album would you like to remove?")
            delete_album_by_artist_and_album_name(albums_data, artist,
                                                  album_name)
        elif choice == "1":
            genre = input("Which genre would you like to check?")
            try:
                genre_list = music_reports.get_albums_by_genre(
                    albums_data, genre)
                display.print_albums_list(genre_list)
            except ValueError:
                display.print_command_result("Wrong genre does not match")

        elif choice == "2":
            message = str(music_reports.get_genre_stats(albums_data))
            display.print_command_result(message)

        elif choice == "3":
            oldest = music_reports.get_last_oldest(albums_data)
            display.print_album_info(oldest)

        elif choice == "4":
            genre = input("Which genre would you like to check?")
            try:
                oldest_from_genre = music_reports.get_last_oldest_of_genre(
                    albums_data, genre)
                display.print_album_info(oldest_from_genre)
            except ValueError:
                display.print_command_result("Wrong genre does not match")

        elif choice == "5":
            longest = music_reports.get_longest_album(albums_data)
            display.print_album_info(longest)

        elif choice == "6":
            message = str(music_reports.get_total_albums_length(albums_data))
            display.print_command_result(message)

        elif choice == "7":
            sys.exit()

        else:
            display.print_command_result("There's no such option. Try again.")
예제 #13
0
def arow_nawigation_menu():
    albums_data = file_handling.import_data("albums_data.txt")
    working = True
    check = False
    text = ""
    menu_index = 0
    menu_lenght = 7
    # while not check and working:"\33[46;37m","\33[m"
    while working and not check:
        arrow_choice = []
        menu_index = ((7000 - len(arrow_up) + len(arrow_down)) % menu_lenght
                      )  #7k gdyby ktos chcial naciska up arrow
        printing_addons = [
            ["", ""], ["", ""], ["", ""], ["", ""], ["", ""], ["", ""]
        ]  #lista z brakujacym elementem ktora bedzie dodrukowywana do menu
        printing_addons.insert(
            menu_index, ["==>>", "<<=="]
        )  # brakujacy element o konkretnym indeksie ktory bedzie zmieniał kolor czcionki
        display.print_program_menu_arrow_nawigation([
            "             Show table              ",
            "            Delete album             ",
            "         Display oldest album        ",
            "          Get albums by genre        ",
            "  What is the oldest album by genre  ",
            "      For number keys navigation     ",
            "                Exit                 "
        ], text, menu_index, printing_addons)
        arrow_sensing(arrow_choice)
        if menu_index == 0 and len(arrow_choice) > 0:
            display.print_albums_list(albums_data)
            display.pause()
            text = ""
        elif menu_index == 1 and len(arrow_choice) > 0:
            display.print_albums_list(albums_data)
            artist = input("What is name of artist you want to delete: ")
            album_name = input("What is name of album you want to delete: ")
            delete_album_by_artist_and_album_name(albums_data, artist,
                                                  album_name)
            text = ""
        elif menu_index == 2 and len(arrow_choice) > 0:
            display.print_command_result(
                music_reports.get_last_oldest(albums_data))
            text = ""
        elif menu_index == 3 and len(arrow_choice) > 0:
            try:
                genre = input("What is the genre?: ")
                display.print_albums_list(
                    music_reports.get_albums_by_genre(albums_data, genre))
                display.pause()
                text = ""
            except (ValueError, IndexError, TypeError):
                text = "\033[41;33mNo such genre\33[m"
        elif menu_index == 4 and len(arrow_choice) > 0:
            try:
                genre = input("What is the genre?: ")
                display.print_command_result(
                    music_reports.get_last_oldest_of_genre(albums_data, genre))
                text = ""
            except (ValueError, IndexError, TypeError):
                text = "\033[41;33mNo such genre\33[m"
        elif menu_index == 5 and len(arrow_choice) > 0:
            check = True
        elif menu_index == 6 and len(arrow_choice) > 0:
            display.clear()
            exit()
예제 #14
0
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """
    menu = [
        'Get album by genre.', 'Get genre stats.', 'Get longest album.',
        'Get last album with earliest release year by genre',
        'Get sum of lengths of all albums in minutes', 'Delete album.'
    ]
    albums = file_handling.import_data()
    while True:

        display.print_program_menu(menu)
        try:
            option = int(input('Enter option number: '))
            os.system('cls')
            if option == 0:
                try:
                    genre = input('Enter genre: ')
                    result = music_reports.get_albums_by_genre(albums, genre)
                    display.print_albums_list(result)
                except:
                    display.print_command_result('Genre not found!')

            elif option == 1:
                result = music_reports.get_genre_stats(albums)
                print(result)

            elif option == 2:
                result = music_reports.get_longest_album(albums)
                display.print_album_info(result)

            elif option == 3:
                try:
                    genre = input('Enter genre: ')
                    result = music_reports.get_last_oldest_of_genre(
                        albums, genre)
                    display.print_album_info(result)
                except:
                    display.print_command_result('Genre not found!')

            elif option == 4:
                result = music_reports.get_total_albums_length(albums)
                display.print_command_result(str(result))

            elif option == 5:
                display.print_albums_list(albums)
                artist = input('Enter artist name: ')
                album_name = input('Enter album_name: ')
                result = delete_album_by_artist_and_album_name(
                    albums, artist, album_name)
                display.print_albums_list(result)
            else:
                print('Option not found')
        except ValueError:
            print('Enter only number!')
예제 #15
0
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """


    print_command_result('MUSIC LIBARY \n')

    while True:
        global file_albums
        global MENU
        print_command_result('Menu\n')
        print_program_menu(MENU)
        print('___________________________________________________\n')
        user_input =input('Please chose one of teh following option:')
        if user_input =='1':
            print_command_result('LIST OF ALBUMS\n')
            print_albums_list(file_albums)
        elif user_input =='2':
            genre = input('Enter a music genre: ')
            gen_albums = get_albums_by_genre(file_albums, genre)
            print_command_result('all of the file data\n')
            print_albums_list(gen_albums)
        elif user_input=='3':
            genre =input('Enter genre: \n')
            last_oldest_by_gen = get_last_oldest_of_genre(file_albums,genre)
            print_command_result('Oldest album of chosen genre:\n')
            print_album_info(last_oldest_by_gen)
        elif user_input =='4':
            longest_album = get_longest_album(file_albums)
            print_command_result('Longest album is:\n')
            print_album_info(longest_album)
        elif user_input =='5':
            lenght_f_album = get_total_albums_length(file_albums)
            print_command_result('"Total albums lenght is(float):\n"')
            print_command_result(str(lenght_f_album))
        elif user_input =='6':
            year = input("Enter choosen year: ")
            album_years = get_album_by_year(file_albums,year)
            print_command_result('Album chosen by year\n')
            print_albums_list(album_years)
        elif user_input =='7':
            last_oldest = get_last_oldest(file_albums)
            print_command_result('oldest album\n')
            print_albums_list(last_oldest)
        elif user_input =='8':
            genre_stat =get_genre_stats(file_albums)
            print_command_result('Statistic\n')
            print_album_info(genre_stat)
        elif user_input =='9':
            break
        else:
            continue
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should have main loop of program that will end only
    when user choose an option from menu to close the program. It should repeat
    displaying menu and asking for input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """
    menu_commands = [
        "Delete student.", "Get student by unique id.",
        "Get all students from given class.",
        "Get youngest student from all classes.",
        "Get youngest student from given class",
        "Get oldest student from all classes",
        "Get oldest student from given class",
        "Calculate average grade of all students",
        "Calculate average presence of all students", "Add new student.",
        "Get all students with given gender", "Sorts student list by age",
        "Update student", "Exit program."
    ]
    while True:
        table = data.import_data_from_file(filename='class_data.txt')
        display.print_command_result("")
        display.print_program_menu(menu_commands)
        answer = input("Hello to JERZYBOT. Please selcect your option:")
        if answer == "0":
            display.print_students_list(table)
            is_in_table = True
            while is_in_table:
                uid = input("Which student would you like to erase(id)? ")
                for row in table:
                    if row[0] == uid:
                        is_in_table = False
            delete_student_by_id(table, uid)
        elif answer == "1":
            display.print_students_list(table)
            uid = input("Which student would you like to check? ")
            try:
                student_data = data.get_student_by_id(uid, table)
                display.print_student_info(student_data)
            except ValueError:
                display.print_command_result('Student does not exist')
        elif answer == "2":
            class_name = get_class_from_user()
            student_data = data.get_students_of_class(table, class_name)
            display.print_students_list(student_data)
        elif answer == "3":
            student_data = data.get_youngest_student(table)
            display.print_student_info(student_data)
        elif answer == "4":
            class_name = get_class_from_user()
            student_data = data.get_youngest_student_of_class(
                table, class_name)
            display.print_student_info(student_data)
        elif answer == "5":
            student_data = data.get_oldest_student(table)
            display.print_student_info(student_data)
        elif answer == "6":
            class_name = get_class_from_user()
            student_data = data.get_oldest_student_of_class(table, class_name)
            display.print_student_info(student_data)
        elif answer == "7":
            message = str(data.get_average_grade_of_students(table))
            display.print_command_result(message)
        elif answer == "8":
            message = str(data.get_average_presence_of_students(table))
            display.print_command_result(message)
        elif answer == "9":
            new_student = []
            question = [
                "name: ", "surname: ", "year of birth: ", "class: ",
                "average grade: ", "average presence: "
            ]
            display.print_command_result("Please provide:")
            for item in question:
                new_student.append(input(item))
            add_new_student(table, new_student)
        elif answer == "10":
            try:
                gender = input(
                    "Which gender would you like to check (female/male)?")
                student_data = data.get_all_by_gender(table, gender)
                display.print_students_list(student_data)
            except ValueError:
                print('Wrong gender')
        elif answer == "11":
            try:
                order = input("Which order you choose(asc, desc, None)? ")
                if len(order) == 0:
                    order = None
                student_data = data.sort_students_by_age(table, order)
                display.print_students_list(student_data)
            except ValueError:
                display.print_command_result("Wrong order")
        elif answer == "12":
            display.print_students_list(table)
            is_in_table = True
            while is_in_table:
                uid = input("Which student would you like to update(id)? ")
                for row in table:
                    if row[0] == uid:
                        is_in_table = False
            new_student = []
            question = [
                "name: ", "surname: ", "year of birth: ", "class: ",
                "average grade: ", "average presence: "
            ]
            display.print_command_result("Please provide:")
            for item in question:
                new_student.append(input(item))
            update_student(table, uid, new_student)

        elif answer == "13":
            sys.exit()
        else:
            display.print_command_result("There's no such option. Try again.")