【问题标题】:Unexpected token '<newline>' after a statement in an if blockif 块中的语句后出现意外的标记“<newline>”
【发布时间】:2019-02-21 19:47:23
【问题描述】:

我是 Python 新手,可以在下面的代码中使用一些帮助

def find_letter_in_alphabet (letter):
    i = 0
    for current_letter in range(len(alphabet)):
        if letter != current_letter : i++
    return I

我正在使用 Visual Studio 2017 和随附的 Python 工具。我得到了错误 Unexpected token '&lt;newline&gt;' 之后 if letter != current_letter : i++

我习惯用 c# 编写,所以 python 对我来说是一个很大的变化。

【问题讨论】:

    标签: python newline code-formatting


    【解决方案1】:

    您需要缩进if 的正文。另外,您应该将I 更改为i 并将i++ 更改为i += 1,因为Python 没有++ 运算符:

    def find_letter_in_alphabet(letter):
        i = 0
        for current_letter in range(len(alphabet)):
            if letter != current_letter:
                i += 1
        return i
    

    在 Python 中,空格对语法很重要,这与 C# 不同。您必须在 Python 中的每个块中添加一个换行符并缩进(如果该块包含多个语句)。

    【讨论】:

    • 如果if的正文只包含一个语句,则不需要缩进。将i += 1if 放在同一行是完全有效的。
    • 谢谢!我猜旧习惯很难改掉!
    【解决方案2】:

    问题是i++。在 Python 中没有++。 您可以添加一个并将其分配给同一个变量。

    i = i + 1
    

    或者以更 Pythonic 的方式:

    i += 1
    

    您可以像这样在一行中执行 if:

    if letter != current_letter: i += 1
    

    但如果你在: 后面加上一个换行符(带有相应的缩进),会有一个更简单的代码:

    if letter != current_letter: 
       i += 1
    

    另外:请注意返回的是I(大写字母)而不是i

    【讨论】:

    • 大写的 I 只是一个格式化的东西。不过感谢您的帮助!我的 C# 开始使用 I++
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多