TypeError字符串索引必须是整数

TypeError字符串索引必须是整数

Python中的TypeError是什么

TypeError是Python编程语言中的异常之一。当对不支持的对象类型进行操作或者说不是有效对象类型时,会引发此异常。

  • 无论何时发生异常,都会引发或发生此异常。
  • 正如名称所示,当存在错误的对象时,我们对其执行不相关操作时,就会出现此类错误。
  • Python编程语言主要有三种类型的错误:语法错误,逻辑错误,异常。
  • 此类错误属于异常错误类别。
  • 用户可以使用raise关键字轻松处理类型错误。

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

  • 如我们所知,字符串的基本结构包含索引值。
  • 字符串的起始值从索引值0开始,并将继续到给定字符串的长度。
  • 每当我们想要提取字符串的特定字符并指定索引值时,如果我们输入的索引不是整数而是其他不同对象类型的值,就会引发TypeError。
  • 例如,如果我们想要从字符串中提取字符2,而我们在索引中输入的却是非整数,将引发类型错误字符串索引必须是整数。

让我们通过示例来理解:

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

示例1:给定一个名为”JavaTpoint”的字符串,你需要提取其中的特定字符”T”。

(在这里,我们将讨论上面示例中出现类型错误的所有情况,以及其解决方案。)

情况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.

解释:

在上述案例中,我们观察到它生成了一个类型错误:字符串索引必须是整数。这是因为,要从字母表JavaTpoint中提取出字符’T’,我们必须以整数形式传递索引值4,而不是字符串形式。

在这里,我们传递了值4,但不是以整数形式,而是以字符串形式,因为我们将其赋值为双引号。

案例1的输出:

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 begins with index value 0,        
# after onwards it will go further by adding 1 to it.      

案例1修正的输出:

TypeError字符串索引必须是整数

案例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.

解释:

在上面的示例中,我们可以观察到,它产生了一个类型错误:字符串的索引必须是整数,因为在这里,要从字母表JavaTpoint中获取字符’o’,我们必须以整数形式传递索引值6,而不是字符串。

在上面的程序中,我们直接传递了字母表,而不是整数值,但是以字符串形式分配了它。

让我们详细理解一下,借助下面提到的纠正方法:

第2种案例的输出:

TypeError字符串索引必须是整数

修正案例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的输出:

TypeError字符串索引必须是整数

示例2:给出一个名为“Wonderful”的字符串,并且要求从字符串中提取出特定的片段或者可以说是”der”这样的子字符串,我们称之为字符串切片。

情况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.

解释:

在上面的情况下,它生成了一个类型错误:字符串索引必须是一个整数,因为在这里,要从字母“Wonderful”中提取出字符串“der”的特定部分,我们必须以整数形式传递索引值3:6,而不是一个字符串。

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

The output of case 1:

TypeError字符串索引必须是整数

让我们通过以下纠正来详细了解这个问题:

第一种情况的纠正:

# 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的修正结果输出:

TypeError字符串索引必须是整数

示例3:对于一个字典示例,我们已经给出了一个字典集,我们需要从中获取特定的键及其相应的值。

情况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"])

在上述案例中,它生成了一个类型错误:字符串索引必须是整数,因为在这里从字典d1中获取特定的键,比如“Sneha”,我们必须传递整数形式的索引i,而不是字符串。

在上述程序中,我们直接传递了字符串,而不是整数值,但是以字符串形式赋值给它。

案例1的输出:

TypeError字符串索引必须是整数

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

案例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)

更正第一种案例的输出:

TypeError字符串索引必须是整数

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

在上面的示例中,我们看到当我们输入的字符串格式错误时,除了整数值之外,可能会生成typeError。虽然我们已经看到了所有示例的修正,但我们必须知道如何处理所有这些异常情况。

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

让我们通过一个示例来更详细地了解

示例:

# 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")

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

TypeError字符串索引必须是整数

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程