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语句之后说了一些关于缩进问题的内容。
答案 0 :(得分:1)
缩进错误就是这样 - 你没有遵循Python规定的缩进规则。
这可能会一次缩进多个级别,混合空格和制表符,或其他一些可能性。
这就是为什么one of the PEP guidelines建议使用四个空格作为缩进而没有别的。
由于已经编辑了问题以修复缩进,并且标签并不总是存在剪切和粘贴操作,因此您应该检查原始来源以查看是否混合了标签和空格。
例如,在vi
中,您可以输入:set list
来查看控制字符。在类UNIX操作系统下,您可以使用xd
或od -xcb
之类的工具来获取文件的十六进制转储。您需要基本上在第一个“真实”字符之前查找以制表符和空格开头的行,或者缩进级别不一致的行。
答案 1 :(得分:1)
从您发布的代码段中,我们无法判断您是否正在混合制表符和空格。
您可以使用python -t file.py
运行文件来自行检查,其中file.py
是您文件的名称。应该发出关于混合标签和空格的警告。
除此之外(并且主要是切向),if a == 'x' or 'X'
不会按照您的想法行事。 Python的布尔比较基于truthy值,如果它不是these values之一,它将假定它是True
。
您想使用此表达式:
if a in ('x', 'X')