【发布时间】:2017-07-03 14:46:11
【问题描述】:
我在方法中使用了 if、elif、else 语句。当我运行代码时,它不会运行 if、elif 或 else,但是当我注释掉 elif 语句时,它会按预期默认为 else。
def message(response):
args.pop(0)
if com_text == "trivia":
# triviaActive will be False
if triviaActive:
# Performs action
return True
# args[0].lower() is not equal to 'start'
elif args[0].lower() == "start" and not triviaActive:
# Performs action
return True
# So it should defaults to this else
else:
# Performs action
return True
我在 if、elif 和 else 语句链上方添加了一些 cmets,这给了我意想不到的结果。在这种情况下,它不会默认使用 else 语句,它只是从方法返回而不运行方法的其余部分。我什至尝试在 if、elif 和 else 语句中使用 print 语句,但程序不运行它们。
(编辑) 我简化了我的 if、elif 和 else。即使使用这个简化版本,我的 elif 仍然存在问题。另外我想提一下,我使用 pop 方法从 args 中弹出一个值并使其为空,这可能是问题所在。
【问题讨论】:
-
你检查你的缩进了吗?似乎最后一个
elif和else比需要缩进一个标签。 -
@GeorgeBou 我检查了缩进,没关系。使用 pycharm,所以看起来不像是语法或缩进问题。
-
也可能是您在缩进中混合了空格和制表符。 Python 2 将制表符解释为等效于 8 个空格,如果您的编辑器以不同方式显示它们(例如,等效于 4 个空格),这可能会非常混乱。在 Python 3 中,不允许在代码的同一部分混合制表符和空格,因此可能应该将您的代码修复为仅使用其中一个(并且可能将您的编辑器配置为将来仅使用其中一个) .
-
@Blckknght 感谢您的建议。我检查了我的设置并更改了它,但它不起作用。我相信这与我的 elif 语句中的“args [0]”有关。当我用实际字符串替换它并将其与“开始”进行比较时,它起作用了。
-
你应该
strip()args[0]
标签: python python-2.7 if-statement