Pythonプログラミングの課題解決:原点からの距離、八王子市の降水量、硬貨の組み合わせ

プログラミング

プログラミングの授業での課題に直面した際に、どのようにコードを書くかが大きなポイントです。ここでは、Pythonでの具体的な課題解決方法を紹介します。問題は、原点からの距離と差の計算、八王子市の降水量データの分析、硬貨の組み合わせの計算です。それぞれの問題に対してどのようなコードを書くべきかを、詳しく解説します。

⑴ 原点からの距離と差の計算

最初の課題は、原点からの距離を計算し、2つの点のどちらが原点から遠いかを出力することです。2点の位置はキーボードから入力されます。距離を計算するためには、ピタゴラスの定理を使用します。コード例は以下の通りです。

import math

# 点の座標を入力
x1, y1 = map(float, input('点1の座標(x1, y1): ').split())
x2, y2 = map(float, input('点2の座標(x2, y2): ').split())

# 原点からの距離を計算
distance1 = math.sqrt(x1**2 + y1**2)
distance2 = math.sqrt(x2**2 + y2**2)

# 結果を出力
print(f'点1の距離: {distance1}')
print(f'点2の距離: {distance2}')

if distance1 > distance2:
    print('点1の方が原点から遠いです。')
else:
    print('点2の方が原点から遠いです。')

このコードでは、入力された座標から原点までの距離を計算し、どちらの点が遠いかを比較して出力します。

⑵ 八王子市の降水量の平均、最大、最小

次の課題は、1934年から2024年までの八王子市の降水量のデータを使い、降水量の平均、最大値、最小値を求めることです。また、最大値と最小値の年を出力し、それらの値と平均値との違いも計算します。リストとして与えられた降水量データを元に次のように計算できます。

# 降水量のデータ(例)
precipitation = [1200, 1100, 900, 1500, 1300, 1600, 1400, 1700, 1800, 1500, 1600, 1400, 1700, 1800, 1600, 1900, 2000, 2200, 2100, 2300]

# 平均降水量を計算
average_precipitation = sum(precipitation) / len(precipitation)

# 最大降水量と最小降水量を計算
max_precipitation = max(precipitation)
min_precipitation = min(precipitation)

# 最大降水量と最小降水量の年を特定
max_year = precipitation.index(max_precipitation) + 1934
min_year = precipitation.index(min_precipitation) + 1934

# 結果を出力
print(f'平均降水量: {average_precipitation}')
print(f'最大降水量: {max_precipitation} 年: {max_year}')
print(f'最小降水量: {min_precipitation} 年: {min_year}')
print(f'最大値との差: {max_precipitation - average_precipitation}')
print(f'最小値との差: {min_precipitation - average_precipitation}')

このコードでは、降水量のリストから平均値、最大値、最小値を計算し、それに基づいて結果を表示します。

⑶ 硬貨の組み合わせ

最後の課題は、3000円未満の買い物で、どの硬貨をどれだけ使用するかを求める問題です。ここでは、額面が大きい硬貨を優先的に使い、1円硬貨以外の硬貨は1枚しか使えないという制約があります。この問題を解くためのコードは次の通りです。

# 支払い額を入力
amount = int(input('支払額を入力(3000円未満): '))

# 硬貨の額面(500円、100円、50円、10円、5円、1円)
coins = [500, 100, 50, 10, 5, 1]
coin_count = {}

# 額面の大きい順に硬貨を使用
for coin in coins:
    if amount >= coin:
        count = amount // coin
        coin_count[coin] = min(count, 1)  # 1枚しか使えない制約
        amount -= coin_count[coin] * coin

# 結果を出力
for coin, count in coin_count.items():
    print(f'{coin}円硬貨: {count}枚')

このコードでは、入力された支払額に対して、額面の大きい硬貨から順に1枚ずつ使用して、必要な硬貨の枚数を求めます。

まとめ

ここで紹介した3つのPythonプログラムは、基本的な計算問題を解くためのコード例です。原点からの距離の計算、降水量データの分析、硬貨の組み合わせの計算をそれぞれ行う方法を学びました。これらの問題を解決するためのコードを使いこなすことで、プログラミングスキルが向上します。引き続き、他の問題にも挑戦してみてください。

コメント

タイトルとURLをコピーしました