【问题标题】:Why does the code given below gives the error "TypeError: string indices must be integers"?为什么下面给出的代码会给出错误“TypeError:字符串索引必须是整数”?
【发布时间】:2019-11-24 06:57:39
【问题描述】:

当我尝试打印子字符串时代码出错

def wrap(string, max_width):
    n=int(len(string)/max_width)
    i=0 
    j=max_width+1
    for _ in range(n):
        print(string[i,j])
        i=j
        j+=max_width

    print(string[i,len(string)])

【问题讨论】:

  • 你得到这个错误的原因是字符串索引必须是整数。您正在尝试使用不正确的字符串索引类型。你期望string[i,j] 会返回什么?也许您的意思是string[i:j]i,j 是元组类型,所以它不是一个有效的字符串索引。

标签: python string indices


【解决方案1】:

这个:

string[i,j]

格式无效。当您尝试获取字符串的特定索引时,您只能放置一个参数,并且该参数必须是整数。所以这里的问题是python将i,j解释为一个元组,而不是一个整数。

您可能正在尝试将字符串从索引i 切片到索引j。在这种情况下,语法是

string[i:j]

因为:告诉python这是一个slice,并且在:的左侧和右侧寻找单独的索引。

【讨论】:

    【解决方案2】:

    这是正确的函数

    def wrap(string, max_width):
        n=int(len(string)/max_width)
        i=0 
        j=max_width+1
        for _ in range(n):
            print(string[i:j])
            i=j
            j+=max_width
    
        print(string[i:len(string)])
    

    您会收到错误,因为您无法从带有string[i,j]string[i,len(string)] 的字符串中获取字符。在 Python 中,":" 用于从字符串中获取字符。

    【讨论】:

    • 谢谢...愚蠢的错误?
    • 没问题,每个人都会犯错。
    猜你喜欢
    • 2016-07-19
    • 2018-01-27
    • 1970-01-01
    • 2019-09-14
    • 2022-08-09
    • 2014-12-30
    • 2011-08-29
    • 2019-11-26
    • 1970-01-01
    相关资源
    最近更新 更多