好的,首先考虑这个:第三项怎么样?还是第四个?还是四十秒?
如果字符串不包含分隔符(例如空格),您将不会得到一个包含两个项目的列表,其中一个是空白的——您最终会得到一个只有一个项目的列表。
在 Python 中,一般通过内置len()
函数获取某物的长度:
len([]) # == 0
len(["foo"]) # == 1
len(["foo", "bar"]) # == 2
因此,你会这样做:
if len(broadcast_list) == 1:
broadcast_list += [""]
做同样事情的其他方法包括broadcast_list.append("")
和broadcast_list.extend([""])
。使用哪一个完全取决于您;+=
并且.extend
或多或少等效,而.append
只能添加一个元素。
查看您的其余代码,您的case
调用不会像您期望的那样工作:在 Python 中,字符串是真实的,因此'string' or 'otherString'
与True or True
. or
严格来说是一个布尔运算符,您不能将它用于“这个或那个”。
Python 因没有 switch 语句而臭名昭著。如果你经历过它,你实现一个的尝试实际上会有点可爱——这样的事情在 Python OOP 中可能是一个很好的练习,并将函数作为一等对象传递。(在我日常使用 Python 的过程中,我几乎不需要做类似的事情,但将它包含在您的概念工具包中真是太好了。)
你可能会很高兴得知 Python 字符串有一个lower
方法。有了它,您的代码最终会看起来像这样:
v = broadcast_list[0].lower()
if v == 'pilight':
# ...
else if v == 'motor':
# ...
else if v == 'camera':
# ....
附带说明一下,您可能想看看PEP8,它是格式化 Python 代码的事实上的标准。如果您希望其他人能够快速找出您的代码,您应该至少符合其最基本的命题 - 例如 CamelCased 的类和小写的变量,而不是相反。