Pythonプログラミングの基礎課題

課題1: 3つの整数を昇順で出力するプログラム

3つの整数を入力し、それらを昇順に並べて出力するプログラムを作成します。

num1 = int(input("最初の数字を入力してください:"))
num2 = int(input("2番目の数字を入力してください:"))
num3 = int(input("3番目の数字を入力してください:"))

numbers = [num1, num2, num3]
numbers.sort()

print("昇順で並べ替えた数字は:", numbers[0], numbers[1], numbers[2])

このプログラムは、入力された3つの数をリストに格納し、組み込みのsort()メソッドを使用して昇順に並べ替えます。この方法は、手動で変数を交換するよりも簡潔で、Pythonらしい書き方です。

課題2: 年と月を入力して、その月の日数を表示するプログラム

年と月を入力し、その月が何日あるか(大の月、小の月、閏年の2月など)を判断して出力します。

def is_leap_year(year):
    """閏年かどうかを判定する関数"""
    return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)

year = int(input("年を入力してください:"))
month = int(input("月を入力してください (1-12):"))

if year < 1000 or year > 9999:
    print("無効な年です!")
elif month < 1 or month > 12:
    print("無効な月です!")
else:
    days_in_month = {
        1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30,
        7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31
    }

    if is_leap_year(year) and month == 2:
        days_in_month[2] = 29

    print(f"{month}月は{days_in_month[month]}日です。")

このプログラムは、まず閏年を判定するための関数を定義し、その後、月と日数を対応させる辞書を用いています。これにより、条件分岐の構造がより明確になり、コードの可読性が向上します。

課題3: 入力された整数のすべての素因数を表示するプログラム

入力された整数のすべての素因数を求めて表示します。

num = int(input("数字を入力してください:"))
print(f"{num}の素因数は: ", end="")

# 2で割り切れるかチェック
while num % 2 == 0:
    print(2, end=" ")
    num //= 2

# 奇数の因数をチェック
factor = 3
while factor * factor <= num:
    while num % factor == 0:
        print(factor, end=" ")
        num //= factor
    factor += 2

# 残った数が素数の場合
if num > 2:
    print(num)

このプログラムは、まず2で割り切れるかを確認し、その後、3から始まる奇数を順に因数として試していきます。因数が見つかった場合は、その因数で数値を割り続け、最後に残った数が1より大きい場合、それは素数であるため出力します。

タグ: Python ソート 条件分岐 ループ 素数

6月14日 20:13 投稿