プログラミング入門I 宿題 2024.07.10

Back


昨年の夏は世界各地で過去最高の暑さだったことがいろいろ言われていました.そこで,気象庁が提供してくれている昨年8月の松江市の気象データから各日の平均気温,最高気温,最低気温を抜き出したものをCSVファイルとして用意しました.

そのデータを読み込んで,以下のように平均気温,最高気温,最低気温の最高値とその発生した日にちを表示するプログラムを作成しましょう.

なお,CSVデータを読み込む際には,必ず元の名前である temp_matsue_2024_08.csv で読み込んでください.勝手な名前を付けると,採点の際にエラーになります.

Student number: s236099

The highest temperatures in August, 2023

          Date  Temperature [˚C]
Average     10      32.4
Highest      5      37.0
 Lowest     10      30.4

------------------------

CSVファイルの内容はすべて文字列として読み込まれることに注意してください.また,読み込み方を工夫すると,2次元リストの並びを変えて max 関数で楽に探せることも可能ですし,index メソッドで日付も読み出せます.

レポート提出システムにもデータはアップしてありますが,ファイル名が変わってしまっているので,注意してください.必ず上に示した名前に変更してから作業しましょう.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,実行時にエラーが出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

# #############################
#
# プログラミング入門II 宿題 2024.7.10
# 学生番号:  s236099
# 氏名:     松江 花子
#
# #############################

from csv import *

print('Student number: s236099')
print('')

with open('temp_matsue_2024_08.csv', 'r') as temp:
    lst = reader(temp)
    temp_list = [row for row in lst]
    temp_list = [[float(temp_list[i][j]) for i in range(1, 32)] for j in range(1, 4)]

temp.close()
#print(temp_list)

mmax = max(temp_list[0])
mdate = temp_list[0].index(mmax) + 1

hmax = max(temp_list[1])
hdate = temp_list[1].index(hmax) + 1

lmax = max(temp_list[2])
ldate = temp_list[2].index(lmax) + 1

print('The highest temperatures in August, 2023')
print('\n          Date  Temperature [˚C]')
print(f'Average  {mdate:5} {mmax:9.1f}')
print(f'Highest  {hdate:5} {hmax:9.1f}')
print(f' Lowest  {ldate:5} {lmax:9.1f}')

print('\n------------------------\n')
# #############################
#
# プログラミング入門II 宿題 2024.7.10
# 学生番号:  s236099
# 氏名:     松江 花子
#
# #############################

from csv import *

print('Student number: s236099')
print('')

with open('temp_matsue_2024_08.csv', 'r') as temp:
    lst = reader(temp)
    temp_list = [row for row in lst]
    temp_list = [[float(temp_list[i][j]) for j in range(4)] for i in range(1, 32)]

temp.close()
#print(temp_list)

data = [[None] * 3 for _ in range(2)]

for i in range(3):
    data[1][i] = max(temp_list[j][i + 1] for j in range(31))


for i in range(31):
    for j in range(3):
        if temp_list[i][j + 1] == data[1][j]:
            data[0][j] = int(temp_list[i][0])

mdate, hdate, ldate = data[0]
mmax, hmax, lmax = data[1]

print('The highest temperatures in August, 2023')
print('\n          Date  Temperature [˚C]')
print(f'Average  {mdate:5} {mmax:9.1f}')
print(f'Highest  {hdate:5} {hmax:9.1f}')
print(f' Lowest  {ldate:5} {lmax:9.1f}')

print('\n------------------------\n')
列をグループ化したリストとして読み込み行をグループ化したリストとして読み込み


Back