当 main 是预期的,但在 python 中检测到不是预期的时候怎么办?

What to do when main is intended, yet being detected not intended in python?

在python的一个程序中,我在程序的开头定义了main函数,并在最后执行。当我编译代码时,显示了一个奇怪的语法错误(检查附件)...

这是代码:

from cs50 import get_string

def main():
    s = get_string("Text: ")
    
    words = countw(s)
    letters = countl(s)
    sentences = counts(s)

    l = (letters/words) * 100
    s = (sentences/words) * 100
    
    index = (0.0588 * 1) - (0.296 * s) - 15.8
    i = round(index)

    print(words)
    print(letters)

    if i < i:
        print("Before Grade 1")
    elif i > 16:
        print("Grade 16+")
    else:
        print("Grade " + str(i))

def countw(string):
    s = len(string.split())
    return s

def countl(string):
    s = len(string)
    return s

def counts(string):
    #todo

main()

这是错误:

ss@comp:/mnt/c/Users/comp/desktop$ python3 readability.py

  File "readability.py", line 37

    main()

    ^
IndentationError: expected an indented block

这是因为您的 counts() 函数为空。

解释器认为您对 main() 的调用是该函数的一部分,因此会发送错误。

尝试注释掉您的 def counts(string): 行:

#def counts(string):
    #todo

正如@quamrana 所指出的,当您调用 counts 函数时,这会导致错误。因此,您应该对 sentences 变量的值进行硬编码,直到完成对 counts() 的编码。


你也可以只在你的函数中写一个 return 语句,return 将你想要的值除以 return 当你完成编码时,像这样:

def counts(string):
    #todo
    return 10

(假设 10 是您的句子变量的合理值)