Начинающий: файл ввода / вывода не работает, позиционные аргументы - PullRequest
0 голосов
/ 13 апреля 2020

Произошла ошибка зацикливания при добавлении, но теперь, когда я могу добавить данные в свой текстовый файл, есть эта ошибка, использующая 'see' для отображения моих данных.

TypeError: list_champs () занимает 0 позиционных аргументов, но был задан 1.

Я не могу видеть, где я добавил неосознанно параметр, который не нужен в моем текущем коде.

# file = open("champs.txt", "w+")

FILENAME = "champs.txt"

def write_champs(champs):
    with open(FILENAME, "w") as file:
        for champ in champs:
            file.write(champ + "\n")

def read_champs():
    champs = []
    with open(FILENAME) as file:
        for line in file:
            line = line.replace("\n", "")
            champs.append(line)
    return champs

def list_champs():
    for i in range(len(champs)):
        champ = champs[i]
        print(str(i+1) + " - " + champs)
    print()

def add_champ(champs):
    champ = input("Champion: ")
    #year = input("Season:    ")
    #champ = []
    champs.append(champ)
    #champ.append(year)
    write_champs(champs)
    print(champ + " was added.\n")

def display_menu():
    print("Premier League Champions")
    print("++++++++++++++++++++++++")
    print("COMMANDS")
    print("see  - See the list of Champions")
    print("add  - Add a Champion to the list")
    print("exit - Exit program")
    print()

def main():
    display_menu()
    champs = read_champs()
    while True:
        command = input("Enter command: ")
        if command == "see":
            list_champs(champs)
        elif command == "add":
            add_champ(champs)
        elif command == "exit":
            print("Later!")
            break
        else:
            print("Input not valid. Try again.")

if __name__ == "__main__":
    main()

Как всегда, помощь очень ценится!

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Вам необходимо изменить def list_champs для поддержки аргументов:

def list_champs(champs):
    for i in range(len(champs)):
        champ = champs[i]
        print(str(i+1) + " - " + champs)
    print()
0 голосов
/ 13 апреля 2020

определение функции

def list_champs():

вызов функции

        list_champs(champs)

Хотите, чтобы функция принимала аргумент или нет? Исправьте одно или другое, в зависимости от предполагаемого дизайна.

...