TypeError:字符串索引必须是整数

什么是 python 中的 TypeError?

TypeError 是 python 编程语言中的异常之一。当对不支持的对象类型执行操作时,或者可以说不是有效的对象类型时,会出现此异常。

  • 每当出现异常时都会引发或发生。
  • 此外,顾名思义,只要有错误的对象,就会出现这种类型的错误,我们会对其执行不相关的操作。
  • Python 编程语言中的错误主要有三种类型:语法错误、逻辑错误、和异常。
  • 这种类型的错误属于异常错误的范畴。
  • 用户可以使用 raise 关键字轻松处理TypeError

TypeError:字符串索引必须是整数

  • 众所周知,字符串的基本结构由索引值组成。
  • 字符串的起始值从索引值 0 开始,它将持续到给定字符串的长度。
  • 每当我们想要取出具有指定索引值的字符串的特定字符时,就会出现TypeError。不过,我们将输入不同对象类型的另一个值,而不是在索引中输入整数值。
  • 例如,如果我们想从字符串中获取字符 2,我们将索引作为整数而不是整数输入,这将引发TypeError字符串索引必须是整数。

让我们借助例子来理解它:

TypeError示例:字符串索引必须是整数

示例 1:给定一个名为“JavaTpoint”的字符串,您需要从中取出特定的字符“T”。T3】

(这里,我们将讨论上述示例中出现TypeError的所有情况及其解决方案。)

情况 1:我们以字符串格式传递数字,而不是在索引中传递整数值。


# Python program to fetch the particular character from the string

print("Enter a string: ")                                      # Enter string JavaTpoint
s=input()
print("To fetch out the character 'T'  from the string")
s["4"]                                                              # As the string begans with index value 0,        
# after onwards it will go further by adding 1 to it.

解说:

在上面的例子中,如果我们观察到这一点,它会产生一个TypeError:字符串索引必须是整数,因为要从字母表 JavaTpoint 中取出字符“T”,我们必须以整数形式而不是字符串形式传递索引值 4。

这里,我们传递值 4,但不是以整数的形式,而是以字符串的形式,正如我们在双引号中赋予它的那样。

情况 1 的输出:

借助下面提到的更正,让我们详细了解一下:

修正案例 1:


# Python program to fetch the particular character from the string

print("Enter a string: ")                                      # Enter string JavaTpoint
s=input()
print("To fetch out the character 'T'  from the string")
s[4]                                                              # As the string begins with index value 0,        
# after onwards it will go further by adding 1 to it.      

修正情况 1 的输出:

情况 2:我们传递索引的字符串值,而不是整数值。


# Python program to fetch the particular character from the string

print("Enter a string: ")                                      # Enter string JavaTpoint
s=input()
print("To fetch out the character ' o '  from the string")
s['o']                                                              # As the string begans with index value 0,        
# after onwards it will go further by adding 1 to it.

解说:

在上面的例子中,如果我们观察到这一点,它会产生一个TypeError:字符串索引必须是整数,因为在这里,要从字母表 JavaTpoint 中取出字符“o”,我们必须以整数形式而不是字符串形式传递索引值 6。

在上面的程序中,我们直接传递字母表而不是整数值,而是以字符串的形式传递,就像我们在双引号中赋值一样。

借助下面提到的更正,让我们详细了解一下:

情况 2 的输出:

修正案例 2:


# Python program to fetch the particular character from the string

print("Enter a string: ")                                      # Enter string JavaTpoint
s=input()
print("To fetch out the character ' o '  from the string")
s[6]                                                              # As the string begins with index value 0,        
# after onwards it will go further by adding 1 to it.

修正情况 2 的输出:

例 2:给定一个名为“奇妙”的字符串,要求你从该字符串中取出特定的切片,或者可以从中说出字符串“der”的一部分,我们称之为字符串切片。T3】

情况 1:我们以字符串格式传递数字,而不是在索引中传递整数值。


# Python program to fetch the particular part from the string

print("Enter a string: ")                                      # Enter string Wonderful
s=input()
print("To fetch out the particular slice ' der '  from the string")
s["3":"6"]                                                              # As the string begans with index value 0,        
# after onwards it will go further by adding 1 to it.

解说:

在上面的例子中,它产生了一个TypeError:字符串索引必须是一个整数,因为,在这里,为了从字母奇妙中取出字符串“der”的特定部分,我们必须以整数形式而不是字符串形式传递索引值 3: 6。

在上面的程序中,我们需要传递值 3: 6,不是以整数的形式,而是以字符串的形式,因为我们已经用双引号赋予了它。

情况 1 的输出:

借助下面提到的更正,让我们详细了解一下:

修正案例 1:


# Python program to fetch the particular part from the string

print("Enter a string: ")                                      # Enter string Wonderful
s=input()
print("To fetch out the particular slice ' der '  from the string")
s[3:6]                                                              # As the string begans with index value 0,        
# after onwards it will go further by adding 1 to it.

修正情况 1 的输出:

例 3:举一个字典的例子,我们给出了一个字典集,要求我们从字典中取出特定的关键字及其对应的值。T3】

情况 1:当我们在索引中传递字符串值,而不是整数值


# Python program to fetch out the particular key with its corresponding value

d1 = { "Shivani" : 19, "Sneha" : 31, "Preeti" : 8, "Abhi" : 50}   # declaring a dictionary
for i in d1:
  print("Sneha: " + i["Sneha"])
  print("Abhi: " + i["Abhi"])

在上面的例子中,它产生了一个TypeError:字符串索引必须是一个整数,因为这里要从字典 d1 中取出特定的关键字“Sneha”,我们必须传递索引 I,它已经是整数形式而不是字符串。

在上面的程序中,我们直接传递字符串而不是整数值,而是以字符串的形式传递,就像我们在双引号中赋值一样。

情况 1 的输出:

借助下面提到的更正,让我们详细了解一下:

修正案例 1:


# Python program to fetch out the particular key with its corresponding value

d1 = { "Shivani" : 19, "Sneha" : 31, "Preeti" : 8, "Abhi" : 50}   # declaring a dictionary
for i in d1:
  print(i)

修正情况 1 的输出:

处理TypeError:字符串索引必须是整数

在上面的例子中,我们看到当我们以非整数值的错误格式输入字符串时,可能会产生TypeError。虽然我们已经看到了所有例子的修正,但是我们必须知道如何处理所有这样的异常。

为了在 python 编程语言中处理这些异常,我们通常会使用“try”和“except”关键字 try block。我们将输入所有的测试用例,主要是尽可能多,其中这是产生TypeError的可能性。我们将通过打印用户定义的错误消息,在 except block 中输入处理上述异常的方式。

让我们借助一个例子更详细地了解

例:


# Python program to handle the type error exception

l1 = ["Apple", "Mango", "Banana", "Grapes"]             # declaring a list
indices = [0, 1, 2, "2", 3]
for i in range(len(indices)):
    try:
        print(l1[indices[i]])                                        # case which generates TypeError
    except TypeError:
        print("TypeError: Check list of indices")

以上异常处理示例的输出:


原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/219597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-09 10:59
下一篇 2024-12-09 10:59

相关推荐

  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • Python中将字符串转化为浮点数

    本文将介绍在Python中将字符串转化为浮点数的常用方法。在介绍方法之前,我们先来思考一下这个问题应该如何解决。 一、eval函数 在Python中,最简单、最常用的将字符串转化为…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • 如何输入三个整数,并输出最大值Python

    对于初学者来说,输入三个整数并输出它们的最大值可能是一个比较基础的问题。然而,它却包含了Python中许多基本知识点的应用,因此学习它可以让我们更好地理解Python编程语言。 一…

    编程 2025-04-29
  • Python学习笔记:去除字符串最后一个字符的方法

    本文将从多个方面详细阐述如何通过Python去除字符串最后一个字符,包括使用切片、pop()、删除、替换等方法来实现。 一、字符串切片 在Python中,可以通过字符串切片的方式来…

    编程 2025-04-29
  • Python基本索引用法介绍

    Python基本索引是指通过下标来获取列表、元组、字符串等数据类型中的元素。下面将从多个方面对Python基本索引进行详细的阐述。 一、列表(List)的基本索引 列表是Pytho…

    编程 2025-04-29
  • Python随机生成100内的10个整数

    本文将从以下几个方面详细阐述Python随机生成100内的10个整数: 一、random库介绍 在Python中,生成随机数可以使用random库。random库包括两种类型的函数…

    编程 2025-04-29
  • 如何将Oracle索引变成另一个表?

    如果你需要将一个Oracle索引导入到另一个表中,可以按照以下步骤来完成这个过程。 一、创建目标表 首先,需要在数据库中创建一个新的表格,用来存放索引数据。可以通过以下代码创建一个…

    编程 2025-04-29
  • 全能编程开发工程师必备技能——如何优化大整数的计算

    本文将会为你分享如何解决大整数计算问题,以9999999967为例,我们将从多个方面对其做详细阐述,并给出完整的代码示例。 一、大整数的表示方法 在计算机中,我们通常采用二进制数来…

    编程 2025-04-29
  • 索引abc,bc会走索引吗

    答案是:取决于MySQL版本和表结构 一、MySQL版本的影响 在MySQL 5.6之前的版本中,MySQL会同时使用abc和bc索引。但在MySQL 5.6及之后的版本中,MyS…

    编程 2025-04-29

发表回复

登录后才能评论