40のおっさんのPython学習記録

20年以上前、学部の必修のC言語が全く理解できずに同級生に放り投げ、その後コーディングから遠ざかったガチ文系のおっさんが、ふと思い立ってPythonに挑戦しています。

10個整数を入力し最大の奇数を判定する問題、ただしパッケージ使用不可

おっさんです。MITのテキストは如何にも理系の教科書っぽくて、これまで読んできた入門書とは毛色が全く違って正直苦戦しています。

この数週間、おっさんは以下の問題にずっと苦しんでいました。10個整数値を入力しその中で最大の奇数を判定すると言う問題なのですが、条件があって、if、else、while、for文のみが使用可能です。この条件さえ外れてしまえば他のパッケージや関数を使えばおっさんでも短いコードはかけます。こんな感じです。

# MITテキストp.24指練習
# 10の整数の中で最大の奇数を判定する
import numpy as np
from numpy.random import *
numlist = list(randint(0,50,10))
print(f"入力された数列は:{numlist}")

revlist = np.array(sorted(numlist, reverse=True))

try:
    print(f"最大の奇数は{revlist[revlist%2==1].max()}でした。")
except:
    print("奇数が入力されてへんのちゃうんけボケ南港に沈めるぞコラ")

でも、こういう基本に立ち返った問題って非常に難しく、これよりも遥かに長ったらしいダラダラとしたコードを書いてムダなループ、無限ループを発生させて苦しんでいました。先週のもくもく会でmaxintを置くべしとヒントを貰って1歩進んで、ようやく今日マトモな短いコードとして完成しました。やっぱりおっさんはアホでセンスが無いです。

# MITテキストp.24指練習
# 10の整数の中で最大の奇数を判定する
import numpy as np
from numpy.random import *
numlist = list(randint(0,50,10))
print(f"入力された数列は:{numlist}")

a = 0
maxint=0
while a<10:
    if numlist[a]%2 == 0:
        a+=1
    else:
        if maxint > numlist[a]:
            a+=1
        else:
            maxint = numlist[a]
            a+=1

if maxint == 0:
    print("奇数が入力されていませんでした。")
else:
    print(f"最大の奇数は{maxint}でした。")