Как получить доступ к переменной другой функции для удаления, Если ID совпадает с вводом пользователя?
У меня есть функция insert, которая возвращает кортеж. Кортеж содержит имя,имя племени,идентификатор,воздух,воду,землю,огонь.
Поэтому я пытаюсь использовать свою функцию удаления аватара для доступа к переменной ID кортежа, чтобы она соответствовала входным данным пользователя.
Тем не менее,я сталкиваюсь с проблемой, я считаю, что способ, которым я пытаюсь получить доступ, неправильный или есть более прямой способ сделать это сравнение, чтобы удалить его. Надеюсь, мне помогут!
Что я уже пробовал:
#this is what my insert function looks like def insert_avatar(): print("Insert a new avatar") name_loop = True number_loop = True tribe_loop = True while name_loop : name = input("Enter Name:") if name >= "a" and name <= "z" or name >= "A" and name <= "Z": name_loop = False while number_loop: three_integer = str(input("Enter id three integers:")) if len(three_integer)==3: number_loop = False else: print("Please enter 3 digits") while tribe_loop: tribename = input("Enter tribe:") if tribename >= "a" and tribename <= "z" or tribename >= "A" and tribename <= "Z": tribe_loop = False else: print("Please enter letters only") air = int(input("Air:")) water = int(input("Water:")) earth = int(input("Earth:")) fire = int(input("Fire:")) id_F_letter = tribename[0].upper() average_power = (air + water + earth + fire)/4 if average_power >=80: last_letter = 'A' elif average_power >= 70: last_letter ='B' elif average_power >= 60: last_letter ='C' elif average_power >=50: last_letter ='D' elif average_power >= 40: last_letter ='E' else: last_letter = 'F' ID = id_F_letter + str(three_integer)+ last_letter print("New Avatar with ID {0} Inserted\n".format(ID)) list_item = name,tribename,ID,air,water,earth,fire return list_item
#delete function def d_avatar(list_item): print("Delete an avatar") deletion = input("Enter avatar id to delete: ") mylist = list(list_item) for value in enumerate(mylist): if value == deletion: del mylist[3] else: print("avatar ID is not found") deletion = input("Enter avatar id to delete: ")
# this is the menu choice while True: choice = menu() print("\n") if choice == "1": mylist = insert_avatar() identity = [] for i in range(1): identity.append(mylist) print(identity) elif choice == "2": d_avatar(list_item) break
Richard MacCutchan
Вам нужно показать код, в котором возвращается переменная list_item, перед операторами выбора.
darryl wong
хорошо сделал обновление спасибо!:)
Richard MacCutchan
Вы не показали код, в котором установлен list_item перед вызовом метода delete.
darryl wong
это в конце моей функции вставки, где я назначил кортеж переменной с именем list_item перед возвращением. Разве это не так, или я что-то упускаю?
darryl wong
может быть, я действительно пропустил что-то, что я переделал, так что извините
Richard MacCutchan
Да, вы пропустили чтение вашего кода. Возвращаемое значение из insert_avatar
вы назвали mylist
, нет list_item
.
darryl wong
list_item = имя,имя племени,идентификатор,воздух,вода,земля,огонь
вернуться list_item
Это мое возвращаемое значение в моем insert_avatar, хотя это неправильно?
Richard MacCutchan
Посмотрите на свой код:
mylist = insert_avatar()
Вы сами это назвали
mylist
!
darryl wong
Ах да, так жаль, что я был смущен тем, что вы имели в виду, попытаюсь внести изменения. Спасибо! это работает.
Однако по какой-то причине он не удаляет идентификатор, который я только что ввел.
Это просто входит в это:
еще:
print("идентификатор Аватара не найден")
удаление = input("введите аватар ID, чтобы удалить: ")
спасибо за помощь!
Richard MacCutchan
Добавьте несколько операторов печати в свой код, чтобы вы могли видеть значения всех обрабатываемых элементов. Бесполезно пытаться угадать, почему он не находит идентификационный номер в списке.
darryl wong
ладно да понял спасибо!