プログラミング初心者が基礎力を固めるためのプログラミング課題15

「変数や関数の使い方は覚えたけど、実際に”身についた“と自信を持って言えない」

そんな悩みを感じることがあると思います。

プログラミングの基礎は、単に知識をインプットするだけでは定着しません。

実際に手を動かして、考えながら課題を解くことで本当の理解につながります。

今回は、プログラミング初心者が基礎力を確かめられる15の問題を用意しました。

問題を解きながら、自身の理解を深めていきましょう!

問題1:変数

変数user_nameに “Taro”、user_ageに 20 を代入し、「Taroは20歳です」と出力するプログラムを作成してください。

出力結果

Taroは20歳です
問題1. 解答
user_name = "Taro"
user_age = 20
# 指定の形式で出力
print(f"{user_name}は{user_age}歳です")

問題2:型

input()を使用して数値を受け取り、その数値に100を足して出力するプログラムを作成してください。

出力形式は「入力値に100を足すと〇〇です」としてください。

出力例

数値を入力してください: 50
# 出力結果
入力値に100を足すと150です
問題2. 解答
# 数値を整数として受け取る
number = int(input("数値を入力してください: "))
result = number + 100
# 指定の形式で出力
print(f"入力値に100を足すと{result}です")

問題3:数値演算

商品の価格(1個あたり120円)購入個数(5個)が与えられたとき、合計金額を計算して出力するプログラムを作成してください。

ただし、3個以上購入した場合は、合計金額から10%割引を適用してください。

出力結果

540円
問題3. 解答
price_per_item = 120  # 商品の価格(1個あたり)
quantity = 5          # 購入個数

total_price = price_per_item * quantity
# 3個以上なら10%割引
if quantity >= 3:
    total_price *= 0.9
# 整数に丸めて出力
print(f"{int(total_price)}円")

問題4:文字列

ユーザー名 “Taro” と、日付 “2025/04/27” をそれぞれ変数に保存してください。

その後、日付のスラッシュ(/)を取り除きユーザー名_日付という形式で出力するプログラムを作成してください。

出力結果

Taro_20250427
問題4. 解答
user_name = "Taro"
date = "2025/04/27"

# 日付のスラッシュを除去
date_cleaned = date.replace("/", "")
# 指定の形式で出力
print(f"{user_name}_{date_cleaned}")

問題5:リスト

リスト [1, 2, 3, 4, 5] の中から、値が3の要素index()メソッドを使って探し、その要素を99に書き換えるプログラムを作成してください。

出力結果

[1, 2, 99, 4, 5]
問題5. 解答
numbers = [1, 2, 3, 4, 5]

# 3が存在するインデックスを取得
index_of_three = numbers.index(3)
# 99に書き換える
numbers[index_of_three] = 99
print(numbers)

問題6:辞書

3人のユーザー情報をそれぞれ辞書型(dict型)で作成し、リストにまとめて管理してください。

ユーザ情報は以下とします。

ID名前年齢
1Taro18
2Jiro22
3Saburo20

そのうえで、年齢が20歳以上のユーザーの「名前」だけを順番に出力するプログラムを作成してください。

出力結果

Jiro
Saburo
問題6. 解答
# ユーザー情報を辞書型で作成し、リスト化
users = [
    {"id": 1, "name": "Taro", "age": 18},
    {"id": 2, "name": "Jiro", "age": 22},
    {"id": 3, "name": "Saburo", "age": 20},
]

# 20歳以上の名前を出力
for user in users:
    if user["age"] >= 20:
        print(user["name"])

問題7:集合

リストA = [1, 2, 3, 3] と リストB = [3, 4, 5, 5]があります。

この2つのリストから、

  • 両方に共通して存在する要素のみを集めた集合
  • どちらかにしか存在しない要素だけを集めた集合

を、それぞれ作成して出力してください。

出力結果

共通して存在する要素: {3}
どちらかにしか存在しない要素: {1, 2, 4, 5}
問題7. 解答
list_a = [1, 2, 3, 3]
list_b = [3, 4, 5, 5]

# 集合に変換
set_a = set(list_a)
set_b = set(list_b)

# 共通して存在する要素(積集合)
common_elements = set_a & set_b
# どちらかにしか存在しない要素(対象差集合)
unique_elements = set_a ^ set_b

# 結果を出力
print(f"共通して存在する要素: {common_elements}")
print(f"どちらかにしか存在しない要素: {unique_elements}")

問題8:タプル

3つの商品情報をそれぞれタプルで作成し、リストにまとめて管理してください。

商品名価格
りんご80
バナナ120
オレンジ150

その上で、次の処理を行なってください。

  1. リストの中から、価格が100円以上の商品だけを取り出して新しいリストを作成する
  2. 作成したリストを、価格が高い順に並び替える
  3. 商品全体の合計金額を計算して表示する

出力結果

100円以上の商品リスト: [('オレンジ', 150), ('バナナ', 120)]
合計金額: 350円
問題8. 解答
products = [("りんご", 80), ("バナナ", 120), ("オレンジ", 150)]

# 100円以上の商品リストを作成
filtered_products = [item for item in products if item[1] >= 100]
# 価格が高い順に並び替える
sorted_products = sorted(filtered_products, key=lambda x: x[1], reverse=True)
# 合計金額を計算
total_price = sum(item[1] for item in products)

# 結果を出力
print(f"100円以上の商品リスト: {sorted_products}")
print(f"合計金額: {total_price}円")

問題9:if

1から100までの数を順番に出力するプログラムを作成してください。

ただし、以下のルールに従ってください。

  • 数字が3の倍数のときは、数字の代わりに “Fizz” と出力する
  • 数字が5の倍数のときは、数字の代わりに “Buzz” と出力する
  • 数字が3の倍数かつ5の倍数のときは、数字の代わりに”FizzBuzz“と出力する
  • 上記以外の場合は、数字そのものを出力する

出力結果

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
...
問題9. 解答
for num in range(1, 101):
    if num % 3 == 0 and num % 5 == 0:
        print("FizzBuzz")
    elif num % 3 == 0:
        print("Fizz")
    elif num % 5 == 0:
        print("Buzz")
    else:
        print(num)

問題10:for

リスト [“Python”, “Django”, “JavaScript”, “SQL”] があります。

このリストをfor文で回し、それぞれの要素に対して以下の処理を行うプログラムを作成してください。

  1. 3文字以上5文字以下」の場合は、「I study 〇〇.」という形式で出力する
  2. 6文字以上」の場合は、「I am learninng 〇〇!」という形式で出力する
  3. 最後に、「Finished!」と出力する

出力結果

I am learning Python!
I am learning Django!
I am learning JavaScript!
I study SQL.
Finished!
問題10. 解答
subjects = ["Python", "Django", "JavaScript", "SQL"]

for subject in subjects:
    # 文字数取得
    length = len(subject)

    if 3 <= length <= 5:
        print(f"I study {subject}.")
    elif length >= 6:
        print(f"I am learning {subject}!")

# すべての処理が完了したらメッセージを表示
print("Finished!")

問題11:関数

3つの数値を受け取り、以下の条件に従って結果を返す関数analyze_numbers(a, b, c)を作成してください。

  • もし3つの数値がすべて同じなら、 “All numbers are equal” を返す
  • もし2つの数値が同じなら、 “Two numbers are the same” を返す
  • すべて異なるなら、最大値を返す

作成した関数をいくつかの引数パターンで呼び出し、結果を出力してください。

出力例

print(analyze_numbers(5, 5, 5))
# 出力結果:All numbers are equal

print(analyze_numbers(2, 2, 3))
# 出力結果:Two numbers are the same

print(analyze_numbers(1, 2, 3))
# 出力結果:3
問題11. 解答
def analyze_numbers(a, b, c):
    if a == b == c:
        return "All numbers are equal"
    elif a == b or b == c or a == c:
        return "Two numbers are the same"
    else:
        return max(a, b, c)

# 関数の動作確認
print(analyze_numbers(5, 5, 5))    # 出力結果: All numbers are equal
print(analyze_numbers(2, 2, 3))    # 出力結果: Two numbers are the same
print(analyze_numbers(1, 2, 3))    # 出力結果: 3

問題12:クラス

次の仕様を満たすUserクラスを作成してください。

  1. インスタンス生成時に、名前(name)年齢(age)を受け取り、保存する
  2. self_introduceメソッドを定義し、「私は〇〇、〇歳です。よろしくお願いします!」という形式で自己紹介を出力する
  3. is_adultメソッドを定義し、年齢が18歳以上なら「成人」、それ以外なら「未成年」を返す

出力例

user1 = User("Taro", 25)
user1.self_introduce()
print(user1.is_adult())

# 出力結果
私はTaro、25歳です。よろしくお願いします!
成人


user2 = User("Hanako", 17)
user2.self_introduce()
print(user2.is_adult())

# 出力結果
私はHanako、17歳です。よろしくお願いします!
未成年
問題12. 解答
class User:
    # インスタンス生成時にデータ格納
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 自己紹介を出力するメソッド
    def self_introduce(self):
        print(f"私は{self.name}、{self.age}歳です。よろしくお願いします!")

    # 「成人」「未成年」を返すメソッド
    def is_adult(self):
        return "成人" if self.age >= 18 else "未成年"

# 動作確認
user1 = User("Taro", 25)
user1.self_introduce()
print(user1.is_adult())

print("---")

user2 = User("Hanako", 17)
user2.self_introduce()
print(user2.is_adult())

問題13:モジュール

Python標準モジュールdatetimeをimportし、次の要件を満たすプログラムを作成してください。

  1. 現在の日付と時刻を取得する
  2. 取得した日付を “YYYY/MM/DD” の形式で出力する
  3. 取得した時刻を “HH:MM:SS” の形式で出力する
  4. 今日の日付が「日曜日」の場合、「今日は日曜日です!」と出力する
    (それ以外の曜日の場合は、何曜日かを英語で出力する)

出力例

日付:2025/04/27
時刻:13:45:23
今日は日曜日です!

---

日付:2025/04/28
時刻:09:12:45
今日はMondayです!
問題13. 解答
from datetime import datetime

# 今の日時分秒を取得する
now = datetime.now()

# 日付と時刻を整形して出力
print(f"日付: {now.strftime('%Y/%m/%d')}")
print(f"時刻: {now.strftime('%H:%M:%S')}")

# 曜日を判定してメッセージを出力
if now.strftime("%A") == "Sunday":
    print("今日は日曜日です!")
else:
    weekday = now.strftime("%A")
    print(f"今日は{weekday}です!")

問題14:外部ライブラリ

Pythonのrequestsライブラリを使用して、ポケモン情報を取得するプログラムを作成してください。

  • APIのURLは「https://pokeapi.co/api/v2/pokemon/pikachu
  • APIにアクセスして、返ってきたJSONデータから「身長(height)」と「体重(weight)」を取り出して、出力してください。

出力結果

ピカチュウの身長は4dm、体重は60hgです。
問題14. 解答
import requests

def fetch_pokemon_data():
    url = "https://pokeapi.co/api/v2/pokemon/pikachu"
    try:
        # APIにリクエスト送信
        response = requests.get(url)
        response.raise_for_status()

        # JSONデータを取得
        data = response.json()

        # 必要な情報を抽出
        height = data.get("height")
        weight = data.get("weight")

        # 結果を出力
        print(f"ピカチュウの身長は{height}dm、体重は{weight}hgです。")
    except requests.RequestException as e:
        print(f"APIリクエストでエラーが発生しました: {e}")

# 実行
fetch_pokemon_data()

問題15:総合問題

以下の仕様を満たすプログラムを作成してください。

  1. 任意の「ポケモン名」を受け取る
  2. 入力されたポケモン名を使用し、PokeAPIにアクセスする
    (例:https://pokeapi.co/api/v2/pokemon/ポケモン名/)
  3. 取得したJSONデータから以下を抽出する
    ・名前(name)
    ・身長(height)(デシメートル)
    ・体重(weight)(ヘクトグラム)
  4. BMIを計算し、小数点第2位まで表示させる
    BMI = 体重(kg) + ((身長(m) × 身長(m))
    ※適切に単位変換を行うこと(身長、体重は10で割る)
  5. BMIに応じて、次の基準で分類し出力させる
BMI範囲判定
BMI < 18.5やせ型
18.5 <= BMI < 25標準体型
25 <= BMI < 30肥満(注意)
30 <= BMI肥満(危険)
  1. 存在しないポケモン名が入力された場合は、エラーメッセージを出して終了させる

出力例

ポケモン名を入力してください: onix
名前: onix
身長: 8.8m
体重: 210.0kg
BMI: 2.71
判定: やせ型
問題15. 解答
import requests

# BMIを計算して、小数点第2位までに丸めて返す
def calculate_bmi(weight_kg, height_m):
    if height_m <= 0:
        raise ValueError("身長が0以下です")
    return round(weight_kg / (height_m ** 2), 2)

# BMIに基づいて体型を判定する
def classify_bmi(bmi):
    if bmi < 18.5:
        return "やせ型"
    elif bmi < 25:
        return "標準体型"
    elif bmi < 30:
        return "肥満(注意)"
    else:
        return "肥満(危険)"

# ポケモンAPIからデータを取得し、必要な情報を返す
def fetch_pokemon_data(name):
    url = f"https://pokeapi.co/api/v2/pokemon/{name.lower()}"
    try:
        response = requests.get(url)
        response.raise_for_status()
        data = response.json()
        height_m = data["height"] / 10    # デシメートル → メートル
        weight_kg = data["weight"] / 10   # ヘクトグラム → キログラム
        return {
            "name": data["name"],
            "height": height_m,
            "weight": weight_kg
        }
    except requests.RequestException:
        print("エラー: ポケモン情報の取得に失敗しました。")
        exit()
    except KeyError:
        print("エラー: 必要なデータが見つかりません。")
        exit()

# メイン処理
pokemon_name = input("ポケモン名を入力してください: ")
pokemon = fetch_pokemon_data(pokemon_name)
bmi = calculate_bmi(pokemon["weight"], pokemon["height"])
result = classify_bmi(bmi)

# 出力
print(f"名前: {pokemon['name']}")
print(f"身長: {pokemon['height']}m")
print(f"体重: {pokemon['weight']}kg")
print(f"BMI: {bmi}")
print(f"判定: {result}")

まとめ

今回は、プログラミング初心者向けに、基礎力を確かめられる15の問題を用意しました。

難しい問題もあったかもしれませんが、苦しみながら考え、手を動かした経験は、必ず今後に活きてきます。

ここまで取り組んだあなたは、もう確実に一歩ステップアップしています。

プログラミングの基礎が身についてきたら、次はToDoアプリや簡単な電卓アプリなどを作ってみるのもおすすめです。

作りながら「わかったつもり」が「使える力」に変わっていくのを感じられるはずです。

最後まで読んでいただき、ありがとうございました!

・いつでも相談できるメンターが欲しい方
・効率的に学習を進めていきたい方

におすすめです!

このリンクから新規登録をしていただくと、お得なクーポンが配布されます

・いつでも相談できるメンターが欲しい方
・効率的に学習を進めていきたい方

におすすめです!

このリンクから登録すると、お得なクーポンGET

よかったらシェアしてね!