課題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より大きい場合、それは素数であるため出力します。