Я сделал список, который содержит ряд имен и меню с параметрами, которые пользователь может использовать для изменения списка. Один из вариантов — заменить одно из имен в списке тем, что вводит пользователь. Как это может быть сделано? Я предпочитаю не использовать индексы
Мой код до сих пор:
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
Также согласитесь с @MarkMeyer, вам также следует рассмотреть возможность обработки, если пользователь отсутствует в списке. То же самое для choice == "c"
, иначе ваш код завершится ошибкой с возбуждением исключения.
@ Марк Мейер @ Ник Лафорж Я предпочитаю, чтобы замененное имя находилось в том же положении, что и старое имя, но не волнуйтесь, @coderoftheday сказал мне, что вместо этого я могу использовать сжатие списка
@wasd237wasd237, если мой ответ сработал, вы можете поставить ему галочку
@coderoftheday Ааа, хорошо, я так и сделаю
@wasd237 ты этого не делал
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")
Такая же проверка может быть добавлена к опции удаления.
Вы должны просто использовать index. Но если очень не хочется, раз вы умеете добавлять имя и удалять имя, то почему бы не удалить старое имя и не добавить замену?