[Python] ABC001 C

C – 風力観測

deg, dis =(int(x) for x in input().split())
direction = ''
w = -1

lst_wind_direction =['NNE','NE','ENE',
'E','ESE','SE','SSE','S','SSW','SW','WSW','W',
'WNW','NW','NNW', 'N']
lst_wind_speed =[0.25, 1.55, 3.35, 5.45, 7.95, 10.75, 13.85, 
17.15, 20.75, 24.45, 28.45, 32.65]
lst_wind_distance =[x*60 for x in lst_wind_speed]

deg /= 10
for i in range(16):
        if deg>=11.25+i*22.5 and deg < 11.25+(i+1)*22.5:
            direction = lst_wind_direction[i]
            break
        else:
            direction = 'N'

for i in range(12):
    if dis < lst_wind_distance[i]:
        w = i
        break
    else:
        w = 12

if i == 0:
    print('C', 0)
else:
    print(direction, w)

速度をroundで四捨五入する方法では上手くいない。結構苦労した。

メモ

  • それぞれ別の変数に入れる時、a, b = (int(i) for i in input().split()) または、a, b = map(int, input().split())
  • 方向は、((dis*10+1125)/2250)%16で0から15の数値に変換できる。
  • 誤差の扱いが難しいので、割り算は使わないほうが良い。
  • 最後までエラーが出ていたのは、cが小文字という理由だった。今後は気を付ける。