Рубрики
Без рубрики

Как исправить JypeError: Индексы списка должны быть целыми числами или ломтиками, а не «ул»?

✯ Обзор Проблема: фиксация ImeError: Индексы списка должны быть целыми числами или ломтиками, а не у STR в Python. Пример: следующий код списки определенного количества транзакций, введенных пользователем. t = [5000, 1500, 10000, 20000, 6500, 8000, 9000, 15000, 2000, 16000] («Введите количество транзакций, которые вы хотите проверить: ‘) для … Как исправить TypeError: Индексы списка должны быть целыми числами или ломтиками, а не «ул»? Подробнее “

Автор оригинала: Shubham Sayon.

✯ Обзор

Проблема: Фиксирование Типерре: Список индексов должны быть целыми числами или ломтиками, а не STR в питоне.

Пример: Следующий код спискирует определенное количество транзакций, введенных пользователем.

t = [5000, 1500, 10000, 20000, 6500, 8000, 9000, 15000, 2000, 16000]
n = input('Enter the Number of transactions you want to check: ')
for i in n:
    print(t[i])

Выход:

Enter the Number of transactions you want to check: 5
Traceback (most recent call last):
  File "D:/PycharmProjects/PythonErrors/rough.py", line 4, in 
    print(t[i])
TypeError: list indices must be integers or slices, not str

Решение: Пожалуйста, пройдите это решение только после того, как вы пройдете сквозь сценарии, упомянутые ниже Отказ

t = [5000,1500,10000,20000,6500,8000,9000,15000,2000,16000]
n = input('Enter the Number of transactions you want to check: ')
for i in range(int(n)):
    print(t[i])

Похоже, ошибок могут быть действительно разочарованными! 😤   Но после того, как вы закончите прочитать эту статью, эти глупые жуки больше не будут проблемой для вас. Поэтому, чтобы понять, что вызывает такие ошибки и как их избежать, важно ответить на несколько вопросов:

  • Что такое А. Типерр в Python?
  • Почему Python поднимает Типерр: Список индексов должны быть целыми числами или ломтиками, а не ул. ?
  • Как мы исправим Типерр: Список индексов должны быть целыми числами или ломтиками, а не ул. ?

✯ Что такое типа в Python?

Python поднимает тип, когда вы пытаетесь использовать функцию или позвонить оператору на то, что имеет неправильный тип.

Там Общие причины, которые ответственны за возникновение Типерр В Python есть:

  • Если вы попытаетесь выполнить определенную операцию, которая не поддерживается операцией между двумя типами объектов.
  • Если вы попытаетесь вызвать не вызываемый вызывающий абонент/функция.
  • Если вы попытаетесь итерации за нетеаративный идентификатор.

Пример:

radius = input("Enter the radius: ")  # string input
print('Circumference = ', 2 * 3.14 * radius)

Выход:

Enter the radius: 5
Traceback (most recent call last):
  File "D:/PycharmProjects/PythonErrors/TypeError Can't Multiply Sequence by non-int of Type 'float' In Python.py", line 2, in 
    print('Circumference = ',2*3.14*radius)
TypeError: can't multiply sequence by non-int of type 'float'

📚 Объяснение: Python не позволяет умножить строковое значение и значение поплавка. Следовательно, когда вы пытаетесь выполнить эту неподдерживаемую работу в Python, она поднимает Типеррор Отказ

Это приводит нас к нашему следующему вопросу!

✨ Почему Python Riss AlseError: Индексы списка должны быть целыми числами или ломтиками, а не «STR»?

📚 Вы можете получить доступ к элементам в последовательных типах типа, такие как строки, кортежи и списки, используя их индекс. Теперь эти Индексы всегда должны быть целыми числами Отказ Когда вы пытаетесь получить доступ к индексу списка, используя строковое значение, то Python поднимает – Типерре: Список индексов должны быть целыми числами или ломтиками, а не ул.

Давайте посмотрим на несколько примеров, чтобы понять, как решить эту ошибку.

✨ Пример 1.

Проблема: Следующая программа намерена назначить номер рулона для студента.

roll = [1, 2, 3, 4, 5]
name = ['Shubham', 'Chris', 'Yakun', 'Jesus', 'Krishna']
i = input("Enter roll no. : ")
print("Name: "+name[i-1]+"\nRoll: "+i)

Выход:

Enter roll no. : 5
Traceback (most recent call last):
  File "D:/PycharmProjects/PythonErrors/rough.py", line 4, in 
    print("Name: "+name[i]+"\nRoll: "+i)
TypeError: list indices must be integers or slices, not str

Теперь давайте погрузимся в решения.

💡 Решение: Примите ввод пользователя как целое число

roll = [1, 2, 3, 4, 5]
name = ['Shubham', 'Chris', 'Yakun', 'Jesus', 'Krishna']
i = int(input("Enter roll no. : "))
print("Name: "+name[i-1]+"\nRoll: "+str(i))

Выход:

Enter roll no. : 1
Name: Shubham
Roll: 1

Объяснение:

Чтобы избежать Типеррор В приведенном выше сценарии:

  • Примите пользователь ввод как целое число с помощью int () метод.
  • Убедитесь, что вы объединяете значения одного и того же типа данных I.E. строки с помощью str () метод.

Теперь давайте перейдем к небольшому сложному сценарию.

✨ Пример 2.

Проблема : Учитывая список словарей; Как извлечь определенное значение, используя его индекс?

people = [
    {'Name': 'Harry',
     'phone': '6589',
     'address': '90 Eastlake Court'
     },
    {
        'Name': 'Ben',
        'phone': '5693',
        'address': '560 Hartford Drive'
    },
    {
        'Name': 'David',
        'phone': '8965',
        'address': '96 SW 42nd'
    }
]
search = input('Enter the name of the person to find his address: ')
for n in (people):
    if search.lower() in people['Name'].lower():
        print('Name: ', search)
        print('Address: ', people['address'])
        break
else:
    print('Invalid Entry!')

Выход:

Enter the name of the person to find his address: harry
Traceback (most recent call last):
  File "D:/PycharmProjects/PythonErrors/rough.py", line 19, in 
    if search.lower() in people['Name'].lower():
TypeError: list indices must be integers or slices, not str

➥ В приведенном выше примере мы пытались получить доступ к индексу, используя ключ « Имя ' который является строкой. Поскольку вы не можете получить доступ к индексу в списке, используя строку, отсюда Python поднимает Типерр: Список индексов должны быть целыми числами или ломтиками, а не ул. .

Теперь давайте посмотрим на решения.

💡 Метод 1: Использование диапазона () + Len ()

  • Чтобы получить доступ к определенному индексу внутри списка, вы должны найти длину списка, используя Лен () метод. Это значение будет целым числом. Теперь вы можете использовать Диапазон () После расчетной функции длины, чтобы повторить каждый элемент в списке.
  • Синтаксис для доступа к конкретному значению из определенного словаря в списке:
    • list_name [index_of_dictionary] ['key_within_dictionary']
    • Пример: – Люди [n] [«Имя»]
people = [
    {'Name': 'Harry',
     'phone': '6589',
     'address': '90 Eastlake Court'
     },
    {
        'Name': 'Ben',
        'phone': '5693',
        'address': '560 Hartford Drive'
    },
    {
        'Name': 'David',
        'phone': '8965',
        'address': '96 SW 42nd'
    }
]
search = input('Enter the name of the person to find his address: ')
for n in range(len(people)):
    if search.lower() in people[n]['Name'].lower():
        print('Name: ', people[n]['Name'])
        print('Address: ', people[n]['address'])
        break
else:
    print('Invalid Entry!')

Выход:

Enter the name of the person to find his address: harry
Name:  Harry
Address:  90 Eastlake Court

💡 Метод 2: Использование перечисления ()

➥ Питоны Встроенный Перечислять (потенциал) Функция позволяет вам петля по всем элементам в ИТЕРИТЕЛЬНО и их связанные счетчики.

В следующем примере демонстрирует, как встроенный Python перечислять () Способ позволяет получить доступ к элементам словаря в списке:

people = [
    {'Name': 'Harry',
     'phone': '6589',
     'address': '90 Eastlake Court'
     },
    {
        'Name': 'Ben',
        'phone': '5693',
        'address': '560 Hartford Drive'
    },
    {
        'Name': 'David',
        'phone': '8965',
        'address': '96 SW 42nd'
    }
]
search = input('Enter the name of the person to find his address: ')
for n, name in enumerate(people):
    if search.lower() in people[n]['Name'].lower():
        print('Name: ', people[n]['Name'])
        print('Address: ', people[n]['address'])
        break
else:
    print('Invalid Entry!')

Выход:

Enter the name of the person to find his address: ben
Name:  Ben
Address:  560 Hartford Drive

💡 Решение 3: Использование понимания списка

Это не может быть самым питонным или самым простым из решений, но это отличный трюк и быстрый взлом, чтобы получить ваше решение в одной строке кода.

people = [
    {'Name': 'Harry',
     'phone': '6589',
     'address': '90 Eastlake Court'
     },
    {
        'Name': 'Ben',
        'phone': '5693',
        'address': '560 Hartford Drive'
    },
    {
        'Name': 'David',
        'phone': '8965',
        'address': '96 SW 42nd'
    }
]
search = input('Enter the name of the person to find his address: ')
print(next((item for item in people if search.lower() in item["Name"].lower()), 'Invalid Entry!')['address'])

Выход:

Enter the name of the person to find his address: harry
90 Eastlake Court

Заключение

Я надеюсь, что эта статья помогла вам! 😀 Пожалуйста, Оставайтесь настроиться и Подписаться Для более захватывающих статей. Счастливое обучение! 📚

  • Вы хотите быстро освоить самые популярные Python IDE?
  • Этот курс приведет вас от новичка к эксперту в Пычарме в ~ 90 минут.
  • Для любого разработчика программного обеспечения имеет решающее значение для освоения IDE хорошо, писать, тестировать и отлаживать высококачественный код с небольшим усилием.

Присоединяйтесь к Pycharm MasterClass Сейчас и мастер Pycharm на завтра!

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.

Вы можете связаться со мной @:

Оригинал: “https://blog.finxter.com/how-to-fix-typeerror-list-indices-must-be-integers-or-slices-not-str/”