Как заменить определенную строку в списке из пользовательского ввода?

Я сделал список, который содержит ряд имен и меню с параметрами, которые пользователь может использовать для изменения списка. Один из вариантов — заменить одно из имен в списке тем, что вводит пользователь. Как это может быть сделано? Я предпочитаю не использовать индексы

Мой код до сих пор:

print("================= = ")
names = ["Chris", "Dave", "Joseph", "Harvey", "Levi"]
print(names)
print("================= = ")

print("(A) Add a name \n(B) Change a name \n(C) Delete a name \n(D) View all names \n(Q) Quit ")
print("================= = ")

while True:

    choice = input("Select an option: ").lower()

    if choice == "a":
        newName = input("Enter a new name: ")
        names.append(newName)

    elif choice == "b":
        oldName = input("What name would you like to replace?: ")
        newName = input("Enter a new name: ")

        # I don't know what to put here
    

    elif choice == "c":
        delete = input("Which name do you want to remove?: ")
        names.remove(delete)

    elif choice == "d":
        print(names)

    elif choice == "q":
        print("Goodbye")
        break

Вы должны просто использовать index. Но если очень не хочется, раз вы умеете добавлять имя и удалять имя, то почему бы не удалить старое имя и не добавить замену?

Mark 23.12.2020 18:14

Также согласитесь с @MarkMeyer, вам также следует рассмотреть возможность обработки, если пользователь отсутствует в списке. То же самое для choice == "c", иначе ваш код завершится ошибкой с возбуждением исключения.

Nic Laforge 23.12.2020 18:19

@ Марк Мейер @ Ник Лафорж Я предпочитаю, чтобы замененное имя находилось в том же положении, что и старое имя, но не волнуйтесь, @coderoftheday сказал мне, что вместо этого я могу использовать сжатие списка

wasd237 23.12.2020 18:26

@wasd237wasd237, если мой ответ сработал, вы можете поставить ему галочку

coderoftheday 23.12.2020 18:30

@coderoftheday Ааа, хорошо, я так и сделаю

wasd237 23.12.2020 19:31

@wasd237 ты этого не делал

coderoftheday 23.12.2020 23:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
6
395
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

    elif choice == "b":
        oldName = input("What name would you like to replace?: ")
        newName = input("Enter a new name: ")
        names = [x if x != oldName else newName for x in names ]
        print(names)

Вы можете использовать понимание списка, чтобы добавить имена, если имя не равно oldName, если имя действительно равно oldName, то вместо этого добавьте newName.

Ответ принят как подходящий

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

elif choice == "b":
    oldName = input("What name would you like to replace?: ")
    newName = input("Enter a new name: ")

    i = names.index(oldName)
    names[i] = newName

Также было бы полезно добавить проверку, чтобы убедиться, что приложение не аварийно завершает работу при вводе имени, которого нет в списке. Что-то вроде:

if oldName in names:
    i = names.index(oldName)
    names[i] = newName
else:
    print("That name is not in the list")

Такая же проверка может быть добавлена ​​к опции удаления.

Другие вопросы по теме