Python:初学者,我无法弄清楚为什么这段代码不会运行说错误

时间:2014-01-08 03:39:43

标签: python

def acceleration(a,ve,vs,t):
    if a == 'x' or 'X':
        a=(ve-vs)/t
    if ve == 'x' or 'X':
        ve = a*t + vs
    if vs == 'x' or 'X':
        vs = ve - a*t
    if t == 'x' or 'X':
        t= (ve-vs)/a
    print a,ve,vs,t

我正在尝试制作一个简单的应用程序,可以根据我输入的变量来解决不同的等式。这个特殊的部分不想运行,但我不明白为什么。在第一个if语句之后说了一些关于缩进问题的内容。

2 个答案:

答案 0 :(得分:1)

缩进错误就是这样 - 你没有遵循Python规定的缩进规则。

这可能会一次缩进多个级别,混合空格和制表符,或其他一些可能性。

这就是为什么one of the PEP guidelines建议使用四个空格作为缩进而没有别的。

由于已经编辑了问题以修复缩进,并且标签并不总是存在剪切和粘贴操作,因此您应该检查原始来源以查看是否混合了标签和空格。

例如,在vi中,您可以输入:set list来查看控制字符。在类UNIX操作系统下,您可以使用xdod -xcb之类的工具来获取文件的十六进制转储。您需要基本上在第一个“真实”字符之前查找以制表符和空格开头的行,或者缩进级别不一致的行。

答案 1 :(得分:1)

从您发布的代码段中,我们无法判断您是否正在混合制表符和空格。

您可以使用python -t file.py运行文件来自行检查,其中file.py是您文件的名称。应该发出关于混合标签和空格的警告。

除此之外(并且主要是切向),if a == 'x' or 'X'不会按照您的想法行事。 Python的布尔比较基于truthy值,如果它不是these values之一,它将假定它是True

您想使用此表达式:

if a in ('x', 'X')