【问题标题】:error: index out of range错误:索引超出范围
【发布时间】:2016-09-08 23:46:45
【问题描述】:

以下代码显示行“sub=sub+s[j]”的“字符串索引超出范围”错误:

    s=raw_input()
    l=len(s)
    row=int(l**0.5)
    column=row+1
    i=0
    while i<column:
        j=i
        sub=""
        while j<len:
            sub=sub+s[j]
            j=j+column
        print sub,
        sub=""
        i=i+1

什么是错误?

【问题讨论】:

    标签: python indexoutofboundsexception


    【解决方案1】:

    len 是一个内置函数,条件 j&lt;len 将始终为真。将行更改为:

    while j < l:
    

    您还应该尝试使变量名称更具描述性。使用单字母变量名是一种反模式在 Python 中

    【讨论】:

      【解决方案2】:

      您可能希望使用:

      while j < len(s):
      

      代替:

      while j<len:
      

      正如 Lex S. 所说,len 是 Python 中保留的内置函数,所以这就是为什么这段代码甚至可以工作的原因(您从未声明过“len”变量)。

      正如他所说,您需要保留 cmets 并使用描述性变量名称,以便我们可以确定您的代码实际上在做什么。我想补充一点,您应该在运算符之间放置空格。所以不是

      column=row+1
      

      应该是

      column = row + 1
      

      您可以阅读PEP 8 了解更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-02
        • 2016-04-17
        • 2015-07-13
        • 2015-02-13
        相关资源
        最近更新 更多