Как найти индекс значения в массиве и использовать его для отображения значения в другом массиве с тем же индексом

#arrays #python-3.x #indexing

#массивы #python-3.x #индексирование

Вопрос:

Я новичок в Python, и я застрял, пробуя «простую банковскую программу».

У меня все правильно, кроме этого бита:

Если пользователь вводит S, то:
Попросите пользователя ввести номер счета.
Найдите в массиве этот номер счета и найдите его позицию в массиве accountnumbers .
Отобразить имя и баланс в позиции, найденной во время вышеупомянутого поиска.

Первоначально предполагалось, что это будет просто через учетные записи 1-5, но теперь у меня возникли проблемы с поиском способа поиска номеров счетов, если они представляют собой любое число, а не только 1-5. Например

Пользователь вводит номера своих учетных записей 34, 445, 340,2354 и 3245. Полностью случайные номера счетов без порядка.

Вот что у меня есть на данный момент

 names = []
accountNumbers = []
balance = []

def displaymenu():
    print("**** MENU OPTIONS ****")
    print("Type P to populate accounts")
    print("Type S to search for account")
    print("Type E to exit")
    choiceInput()

def choiceInput():   
    choice = str(input("Please enter your choice: "))
    if (choice == "P"):
        populateAccount()
    
    elif (choice == "S"):
        accountNumb = int(input("Please enter the account number to search: "))
        if (accountNumb > 0) and (accountNumb < 6):
            print("Name is: "   str(names[accountNumb - 1]))
            print(names[accountNumb - 1]   " account has the balance of : $"   str(balance[accountNumb -1]))
        elif (accountNumb == accountNumbers):
            index = names.index(accountNumb)
            accountNumb = index
            print(names[accountNumb - 1]   " account has the balance of : $"   str(balance[accountNumb -1]))
        else:
            print("The account number not found!")
    
    elif (choice == "E"):
        print("Thank you for using the program.")
        print("Bye")
        raise SystemExit
    
    else:
        print("Invalid choice. Please try again!")
    displaymenu()

def populateAccount ():
        name = 0
        for name in range(5):
                Names = str(input("Please enter a name: "))
                names.append(Names)
                account ()
                name = name   1
        
        
def account ():
    accountNumber = int(input("Please enter an account number: "))
    accountNumbers.append(accountNumbers)
    balances()
    
def balances ():
    balances = int(input("Please enter a balance: "))
    balance.append(balances)


displaymenu()

 

Я пытался использовать индексы и не смог найти решение.

Ответ №1:

Замените следующую строку кода
if (accountNumb > 0) and (accountNumb < 6):
с помощью
if (accountNumb > 0) and (accountNumb < len(accountNumbers)):

Ответ №2:

Моя ошибка. Я ошибся при добавлении номера счета:

 def account ():
    accountNumber = int(input("Please enter an account number: "))
    accountNumbers.append(accountNumbers)
    balances()
 

Я добавил

accountNumbers

не

AccountNumber

код должен быть

 def account ():
    accountNumber = int(input("Please enter an account number: "))
    accountNumbers.append(accountNumber)
    balances()
 

также функция searchArray, которую я создал, была:

 def searchArray(accountNumbers):
    x = int(input("Please enter an account number to search: "))
    y = accountNumbers.index(x)
    print("Name is: "   str(names[y]))
    print(str(names[y])   " account has a balance of: "   str(balance[y]))
 

ошибка новичка, не следует использовать такие похожие имена объектов.