Skip to main content
 首页 » 编程设计

python之即使执行 IF 语句的 Else 语句为 TRUE

2025年05月04日17yjmyzz

我在标题中描述了 Python 语言的问题。

 for slovo in slova: 
        if pygame.mouse.get_pressed()[0] and slovo["rect"].collidepoint(pygame.mouse.get_pos()): 
            for i in range (len(randRijec)): 
                if slovo["name"] in randRijec[i]: 
                    if i == 0: 
                        slovo1 = randRijec[i].upper() 
                        prvoSlovo = 1 
                    ... 
                    ... 
                else: 
                    pogresnoBrojac += 1 
            slova.remove(slovo) 

所以,即使这个 IF 语句是 true,ELSE 语句正在执行!但是,如果满足 if 语句,则应跳过 else 语句。

如何解决这个问题?

附注我以前遇到过几次这个问题,但我无法解决...

请您参考如下方法:

您的代码中混合了制表符和空格:

运行 cat -A test.py(在 Unix 上)产生

     for slovo in slova:$ 
            if pygame.mouse.get_pressed()[0] and slovo["rect"].collidepoint(pygame.mouse.get_pos()):$ 
                for i in range (len(randRijec)):$ 
                    if slovo["name"] in randRijec[i]:$ 
                        if i == 0:$ 
                            slovo1 = randRijec[i].upper()$ 
                            prvoSlovo = 1$ 
^I^I^I^I^I^I...$ 
^I^I^I^I^I^I...$ 
                    else:$ 
                        pogresnoBrojac += 1$ 
                slova.remove(slovo)$ 

^I 表示制表符。

因此,else block 未被解释为处于它出现 的缩进级别。

您的 Python 代码不应该混用制表符和空格来缩进。您可以通过运行 python -t script.py 检查您的脚本是否混合了制表符和空格。

在 Python 中,您必须 promise 只使用空格或制表符进行缩进。 PEP8建议仅使用空格缩进。

您可以使用 reindent.py program 将制表符转换为空格.