では、まずこれを考えてみましょう。3 番目の項目はどうでしょうか。それとも4番目?それとも42秒?
文字列に区切り文字 (スペースなど) が含まれていない場合、2 つの項目のリストが作成されず、そのうちの 1 つが空白になり、1 つの項目のみのリストになります。
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 の使用では、そのようなことを行う必要はほとんどありませんが、概念的なツールキットに含まれていることは素晴らしいことです。)
lower
Python 文字列にはメソッドがあることを知って喜んでいるかもしれません。それを使用すると、コードは次のようになります。
v = broadcast_list[0].lower()
if v == 'pilight':
# ...
else if v == 'motor':
# ...
else if v == 'camera':
# ....
余談ですが、Python コードをフォーマットするためのデファクト スタンダードであるPEP8を確認することをお勧めします。他の人がコードをすぐに理解できるようにしたい場合は、少なくともその最も基本的な命題に準拠する必要があります。たとえば、クラスはキャメルケースで、変数は小文字にするなど、その逆ではありません。