Почему входные данные в списке перезаписываются - PullRequest
0 голосов
/ 08 января 2020

Код на данный момент:

List=list()
while True:
    print(
        'a.   Add a new record'
        'b.   Display all employees'
        'c.   Exit'
    )
    option=input("Enter an option")

    if option == "a" :
        sur= input("enter surname")
        fir = input("enter firstname")
        List.append(sur)
        List.append(fir)

    elif option == "b" :
        for x in empList:
            print("firstname :" , fir)
            print("surname :" , sur)

    elif option == "c" :
        break;

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

1 Ответ

0 голосов
/ 08 января 2020

Ничто не перезаписывается. Проблема в том, что вы используете имена sur и fir, которые связаны с последней итерацией l oop в команде "a". Они могут даже не существовать; если вы попытаетесь отобразить все до ввода имени, вы получите исключение NameError.

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

elif option == "b":
    for x in empList:
        print(x)

Тогда вы обнаружите еще одну проблему с логикой c. «Добавляющая» часть вашего кода добавляет имя и фамилию индивидуально. Между именем и фамилией человека нет никакой связи, за исключением того факта, что они находятся в соседних индексах. Это может быть недостаточно сильное отношение.

Вместо

empList.append(sur)
empList.append(fir)

вам, вероятно, следует сделать

empList.append((sur, fir))

, который вставит каждого человека в список в виде кортежа. .

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