エラーが出ることが予測されるコードで
エラーを回避しようとするコードにしようとした場合、
冗長になってしまうのですが、良い対処方法を教えていただけないでしょうか。
実行環境は以下の通りです。
Windows10
google colab
Python 3.7.13
以下のようにリストの各要素に対して処理をするコードがあるとします。
サンプルコードのように a, b, c では要素がある以上、できるだけ値を入れたいと考えています。
ポイントはリストの要素の数が一定ではないということです。
下記のコード①ですと
lists の要素数は4個ですが、これが処理の流れによっては変動してしまいます。
(しかし大体は4個程度を想定しており、10個20個になることはありません。)
コード①は4個の要素に対して、それぞれ処理をしているので、エラーになることはありません。
python
1# ① 2lists = [2947, 683, 1057, 9301] 3a = lists[0] / lists[1] 4b = lists[1] / lists[2] 5c = lists[2] / lists[3] 6print(a, b, c)
しかしリストの要素数が減り、例えば2個などになってしまうと
コード①ではエラーが出てしまいます。
その回避方法としてコード②のように
if で場合分けをすることを考えたのですが、
変動する要素数それぞれで場合分けをしなくてはならず、冗長になってしまいます。
(コード②では要素数4個までの場合分けで止めています。)
python
1# ② 2lists = [2947, 683] 3if len(lists) == 1: 4 a = '-' 5 b = '-' 6 c = '-' 7elif len(lists) == 2: 8 a = lists[0] / lists[1] 9 b = '-' 10 c = '-' 11elif len(lists) == 3: 12 a = lists[0] / lists[1] 13 b = lists[1] / lists[2] 14 c = '-' 15elif len(lists) == 4: 16 a = lists[0] / lists[1] 17 b = lists[1] / lists[2] 18 c = lists[2] / lists[3] 19print(a, b, c)
try except の使用も考えてはみましたが、
結局 a, b , c それぞれにできるだけ値を入れたいというのを考えと、
exceptの部分でコード②のような場合分けをしないといけないことになってしまいました。
上記のような処理の場合、a, b, c に値はできる限りいれつつも、より簡潔に(一回一回場合分けをしなくても済むような)エラー対処をできる構文はこざいますでしょうか。
長くて分かりにくい部分もあり、申し訳ございませんが、教えて頂けますと幸いです。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。