darryl wong Ответов: 0

Как получить доступ к переменной другой функции для удаления, Если 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

ладно да понял спасибо!

0 Ответов