Why does the code given below gives the error "TypeError: string indices must be integers"?

Why does the code given below gives the error "TypeError: string indices must be integers"?

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

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]

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

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

string[i:j]

之所以有效,是因为 : 告诉 python 这是一个 切片 ,并在切片的左侧和右侧寻找单独的索引:.

这是正确的函数

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 中,“:”用于从字符串中获取字符。