【问题标题】:Why am I getting expected an indented block when I shouldn't be?为什么我不应该得到一个缩进块?
【发布时间】:2019-09-02 17:52:58
【问题描述】:

它一直说在第一个 ' ' 之后需要一个缩进块 但问题是,在这段代码运行良好的一个小时前 现在由于某种原因出现此错误

每当我尝试在该区域附近进行修改时,它都会让我将其更改为 python 中的函数,而不是我想要使用或比较的变量

def reduceWhitespace(S):

"""
Takes string value and returns with all extra spaces taken out between words
""" 

    hold = S[0]

    for i in range(len(S)-1):
        if S[i] == ' ' and S[i+1] == ' ' :
            continue
        hold += S[i+1]

    return(hold)

它需要做的就是检查字符串中是否有多余的空格,然后吐出结果,所有空格都没有减一,这样一个句子看起来就像一个句子

更新了整个代码

【问题讨论】:

  • return 需要在函数 def 中,或者你只是没有显示?
  • 这一切都在一个定义的函数中,我只是没有展示那部分,抱歉。这很奇怪,因为我什么都没碰,一个小时后又运行了一次以确保它仍然没问题,它突然显示这个错误
  • @user11349209 这不是一回事。您可能在某处插入了一个选项卡。发布您的实际功能和错误的实际堆栈跟踪。
  • 您的文档字符串似乎没有正确缩进。请记住,文档字符串与任何其他表达式一样是代码,并且必须与函数体的其余部分一起缩进。
  • 这很愚蠢,但很有意义。谢谢!

标签: python


【解决方案1】:

此代码不会给您错误,因为""" 也是缩进的。 """ ... """ 是一个 Python docstring,文档字符串是字符串字面量,它出现在类、模块、函数或方法定义中,它作为第一条语句编写,最终将作为实际代码。

关于同一问题,请参阅此 SO 问题:Indent and comments in function in Python

def reduceWhitespace(S):

    """
    Takes string value and returns with all extra spaces taken out between words
    """ 

    hold = S[0]

    for i in range(len(S)-1):
        if S[i] == ' ' and S[i+1] == ' ' :
            continue
        hold += S[i+1]

    return(hold)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-22
    • 2014-05-12
    • 1970-01-01
    • 2013-11-06
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多