Mune's Weblog

鹿児島在住のstray radiologistです
仕事も趣味も画像関係…

2020.04.25 条件分岐を含むforループで関数を使用するスクリプトのメモ

2020年04月25日 | 仕事関係
先週から妻にアノテーションしてもらっていたパブリックデータでの人工知能モデルの開発に成功。
そこそこの精度だったので、本題である人工知能モデルの出力結果からの数値計算プログラムを作成するものの、Pythonの基本構文を今一つ理解しきれていないために中々苦労しています...リスト内包表記とか、λ式とか、いつになったら使えるようになるのだろう(._.)

自粛中で海には行けないし(連盟やローカル主体で自粛すること自体にたくさんの意味があると思っています)、朝から小さなプログラムを書いて勉強中。
ようやく先が見えてきたので、メモ代わりにアップ。
失敗例も明確に理由がわかるわけではないので、教えていただけるとうれしいです。
*入力したインデントが上手く反映されていません...インデントのミスはありませんでした!

次は例外処理を入れて上手くいくかテストしないと...


タプルのリストを作る
tup = [('CHEST',10,(1,2,3,4)),('chest',10,(1,2,3,4))]

リストの要素であるタプルから、任意の要素をスライシングで取り出す
tup[0][0]
Out[13]: 'CHEST'

通常のfor文のテスト
for i in tup:
print(i)

('CHEST', 10, (1, 2, 3, 4))
('chest', 10, (1, 2, 3, 4))

タプルのリストから、任意のスライシングで取り出す関数cnt2を定義
def cnt2(key,se):
return se[key]

for文に組み込んでのテスト
for cnt, se in enumerate(tup):
print(cnt2(cnt, tup))

('CHEST', 10, (1, 2, 3, 4))
('chest', 10, (1, 2, 3, 4))
成功!

リスト内にあるタプル内の3番目の要素を取り出す関数cnt3を定義
def cnt3(key, se):
return se[key][2]

for文に組み込んでのテスト
n [35]: for cnt, se in enumerate(tup):
print(cnt3(cnt, tup))

(1, 2, 3, 4)
(1, 2, 3, 4)
成功!

for文に条件分岐を上手く入れられなかったので、for文内に変数を定義してみる練習
for cnt, se in enumerate(tup):
key = cnt2(cnt, tup)[0]
print(key)

CHEST
chest

for文に変数を定義してやると、条件分岐が上手くいった!!
for cnt, se in enumerate(tup):
key = cnt2(cnt, tup)[0]
if key == 'chest':

print(key)
chest

以下、失敗例...

ダメだった例(1)

def cnt(se):
for i in se:
return i
cnt(tup)
Out[19]: ('CHEST', 10, (1, 2, 3, 4))

ダメだった例(2)
def cnt(se):
cont = 0
for cont in range(len(se)):
return se[cont]
cnt(tup)
Out[21]: ('CHEST', 10, (1, 2, 3, 4))

ダメだった例(3)
def cnt(se):
cont = 0
for cont in range(len(se)):
Element = se[cont]
cont +=1
return Element
cnt(tup)
Out[23]: ('CHEST', 10, (1, 2, 3, 4))

ダメだった例(4)
def cnt(se):
cont = 0
for cont in range(len(se)):
Element = se[cont]
#cont +=1
return Element
cont+=1
cnt(tup)
Out[25]: ('CHEST', 10, (1, 2, 3, 4))

ダメだった例(5)
def cnt(se):
cont = 0
for cont in range(len(se)):
Element = se[cont]
#cont +=1
#return Element
cont+=1
return Element
cnt(tup)
Out[27]: ('chest', 10, (1, 2, 3, 4))

ダメだった例(6-1) for文にif文で条件分岐を加えた失敗例
for cnt, se in enumerate(tup):
if cnt2(cnt, tup)[0] == 'chest':
print(cnt2(cnt, tup)
break


File "", line 4
break
^
SyntaxError: invalid syntax

ダメだった例(6-2) for文にif文で条件分岐を加えた失敗例
for cnt, se in enumerate(tup):
if cnt2(cnt, tup)[0] == 'chest':
print(cnt2(cnt, tup)
break


File "", line 4
break
^
SyntaxError: invalid syntax

ダメだった例(6-2) for文にif文で条件分岐を加えた失敗例
for cnt, se in enumerate(tup):
if cnt2(cnt, tup)[0] == 'chest':
print(cnt2(cnt, tup)

File "", line 4

^
SyntaxError: unexpected EOF while parsing



2020.03.25 海洋調査 タコ&ボウズ

2020年04月02日 | 海洋調査
もう1週間前の話。
終業式の日が大潮だったので、ソウタとホームへお邪魔し、ポイント脇の岩場へ調査に出かけました。



少し風の影響があり海中を観察するのが難しい上にアメフラシが大発生。ソウタにアレコレ指導するものの、半ば諦めながら手探りしてましたが...
1時間ほど後でしょうか、どんどん先に進んでいたソウタが「タコ!タコ!タコおおお!」と絶叫。
なんと手銛で初のタコを仕留めていました(*^_^*)
「やった、やった...オレ、足震えてる...」と。

まだ水温が上昇する前ですが、そこそこのサイズのタコでした。「獲ったやつがやるもんだぞ」と言ったところ、YouTubeで下処理から料理まで勉強し、美味しくいただくことができました。
これでサバイバル能力が1レベルアップしたね!
...次は負けん。