※表紙はAI生成のイメージ写真です。実在の受講生や授業の記録ではありません。
Pythonの問題集・練習問題を探しているなら、まずこのページの練習問題10問(解答例つき)で今の実力を確かめ、続きはpaizaの「レベルアップ問題集」やAtCoderの「APG4bPython」など、無料から使える問題集サイトで数をこなすのがおすすめです。問題集サイトは、2026年9月29日に各公式ページで存在と無料・有料の区分を確認できた9つだけを紹介します。入門書やレッスンを一通り終えたのに「本当に身についたか自信がない」という方は、手を動かして問題を解くことで、覚えた文法が使える知識に変わっていきます。
サイトごとの無料の範囲やレベル、練習問題が載っているおすすめの本、力がつく進め方もあわせて解説します。料金や無料の範囲は変わることがあるため、利用前に各公式サイトでも確認してください。

Python問題集サイト・練習問題サイトおすすめ9選の比較表
| サイト名 | 言語 | 料金の区分(2026年9月時点) | レベル | 特徴 |
|---|---|---|---|---|
| paiza レベルアップ問題集 | 日本語 | 一部無料(無料会員は受験・解答コードの閲覧に制限あり) | 初級〜上級 | ランク別・テーマ別の問題セット |
| paiza スキルチェック | 日本語 | 会員登録で受験できる | 初級〜上級 | D〜Sランクの問題で実力を判定 |
| AtCoder APG4bPython | 日本語 | 無料(ユーザー登録が必要) | 入門〜初級 | 解説+練習問題+自動採点 |
| AtCoder Beginners Selection | 日本語 | 無料(ユーザー登録が必要) | 初級 | 過去問から選ばれた10問 |
| Progate(Python 問題集) | 日本語 | 有料のプラスプラン(無料プランは初歩的なレッスンの一部) | 入門〜初級 | スライドで学んだ内容を問題集で復習 |
| Tech-Joho.info Python問題集 | 日本語 | 無料 | 入門 | ブラウザ上で解ける、解答例と解説つき |
| Exercism(Python) | 英語 | 無料 | 入門〜中級 | 146の課題、ボランティアのメンターがレビュー |
| データサイエンス100本ノック(構造化データ加工編) | 日本語 | 無料 | 中級 | データの集計・加工を100問で練習 |
| 言語処理100本ノック 2025 | 日本語 | 無料 | 中級〜上級 | 自然言語処理・機械学習の課題 |
入門を終えたばかりの方は、paizaのレベルアップ問題集(Dランク相当の問題)かAtCoderのAPG4bPythonから始めると、無理なく続けやすいです。
Pythonの練習問題10問【解答例つき・初心者向け】
ここからは、入門を終えた方向けの練習問題です。問題1〜5は基本の文法(for文・if文・リスト・辞書)、問題6〜10は関数・入力・クラスを使う少し応用の問題です。解答例はどれも、2026年9月にPython 3.11とPython 3.14で実行し、出力例どおりになることを確認しています。
まずは解答例を見ずに、自分で書いてみてください。答えは1つではないので、出力例と同じ結果になれば正解です。Pythonをまだパソコンに入れていない方は「MacにPythonをインストールする方法」を参考に準備しましょう。
問題1:FizzBuzz(初級)
1から15までの数を順番に表示してください。ただし、3の倍数のときは「Fizz」、5の倍数のときは「Buzz」、3と5の両方の倍数のときは「FizzBuzz」と表示します。
ヒント:range()と%(割り算の余り)を使います。15の倍数の判定を先に書くのがポイントです。
解答例:
for i in range(1, 16):
if i % 15 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)
出力例(最後の5行):11、Fizz、13、14、FizzBuzz
問題2:合計と平均を求める(初級)
リスト[72, 85, 90, 64, 78]の点数の合計と平均を表示してください。
ヒント:sum()で合計、len()で要素の数がわかります。
解答例:
scores = [72, 85, 90, 64, 78]
total = sum(scores)
average = total / len(scores)
print(f"合計: {total}点")
print(f"平均: {average}点")
出力例:
合計: 389点
平均: 77.8点
問題3:偶数だけを取り出す(初級)
リスト[3, 8, 15, 22, 7, 40, 11]から偶数だけを取り出して、新しいリストとして表示してください。
ヒント:2で割った余りが0なら偶数です。リスト内包表記を使うと1行で書けます(for文とappend()で書いても正解です)。
解答例:
numbers = [3, 8, 15, 22, 7, 40, 11]
evens = [n for n in numbers if n % 2 == 0]
print(evens)
出力例:[8, 22, 40]
問題4:max()を使わずに最大値を求める(初級)
問題3と同じリストの中の最大値を、max()を使わずに求めてください。
ヒント:最初の要素を「仮の最大値」にして、それより大きい数が出てきたら入れ替えます。
解答例:
numbers = [3, 8, 15, 22, 7, 40, 11]
largest = numbers[0]
for n in numbers:
if n > largest:
largest = n
print(largest)
出力例:40
問題5:単語の出現回数を数える(初級)
文字列"apple banana apple orange banana apple"に、それぞれの単語が何回出てくるかを辞書にまとめて表示してください。
ヒント:split()で単語に分け、辞書のget()で「まだ無ければ0」として数えます。
解答例:
text = "apple banana apple orange banana apple"
counts = {}
for word in text.split():
counts[word] = counts.get(word, 0) + 1
print(counts)
出力例:{'apple': 3, 'banana': 2, 'orange': 1}
問題6:素数を判定する関数を作る(中級)
整数nが素数ならTrue、そうでなければFalseを返す関数is_prime(n)を作り、1〜30の素数を表示してください。
ヒント:2から「nの平方根」までの数で割り切れなければ素数です。1は素数ではありません。
解答例:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
primes = [n for n in range(1, 31) if is_prime(n)]
print(primes)
出力例:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
問題7:回文かどうかを判定する(中級)
前から読んでも後ろから読んでも同じ文字列(回文)かどうかを判定する関数を作ってください。大文字・小文字の違いと空白は無視します。
ヒント:[::-1]で文字列を逆順にできます。
解答例:
def is_palindrome(text):
cleaned = text.replace(" ", "").lower()
return cleaned == cleaned[::-1]
print(is_palindrome("level"))
print(is_palindrome("Never odd or even"))
print(is_palindrome("python"))
出力例:
True
True
False
問題8:辞書のデータを並べ替えて絞り込む(中級)
4人の点数が入った辞書から、75点以上の人だけを点数の高い順に表示してください。
ヒント:sorted()のkeyに、点数を取り出す関数を指定します。
解答例:
students = {"佐藤": 82, "鈴木": 67, "高橋": 91, "田中": 75}
for name, score in sorted(students.items(), key=lambda item: item[1], reverse=True):
if score >= 75:
print(f"{name}: {score}点")
出力例:
高橋: 91点
佐藤: 82点
田中: 75点
問題9:入力された2つの数の合計を出す(中級)
「3 5」のように、1行に空白区切りで入力された2つの整数を受け取り、合計を表示してください。paizaやAtCoderの問題は、このように入力を受け取る形式が基本です。
ヒント:input().split()で文字列を分け、map(int, ...)で整数に変換します。
解答例:
a, b = map(int, input().split())
print(a + b)
実行して「3 5」と入力すると8と表示されます。
問題10:銀行口座のクラスを作る(中級)
名前と残高を持つBankAccountクラスを作り、入金(deposit)と出金(withdraw)ができるようにしてください。残高より多い金額を出金しようとしたら「残高が足りません」と表示し、残高は変えません。
ヒント:__init__で最初の値を設定し、メソッドの中ではself.balanceで残高を読み書きします。
解答例:
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
if amount > self.balance:
print("残高が足りません")
return
self.balance -= amount
account = BankAccount("山田", 1000)
account.deposit(500)
account.withdraw(2000)
account.withdraw(300)
print(f"{account.owner}さんの残高: {account.balance}円")
出力例:
残高が足りません
山田さんの残高: 1200円
10問すべて解けた方は、次に紹介する問題集サイトで、もっと多くの問題に挑戦してみましょう。いろいろなプログラムの書き方を見たい方は「Pythonサンプルコード20選」も参考になります。
短い問題を解けるようになったら、ファイルを読み込んで結果を出す課題にも挑戦してみましょう。CSV集計の実習記事では、サンプルデータ・実行コード・正解CSVを使い、入力ミスや重複を除外しながら答えを照合できます。
無料から使える日本語のPython問題集サイト
paiza レベルアップ問題集
ITエンジニア向けの転職・学習サービスを運営するpaizaの問題集です。「最初の一歩」「基礎文法」のほか、スキルチェックのランク(D〜S)ごとに、上から順番に解くとレベルアップできる問題のメニューが用意されています。Python3で解くことができます。
- 料金の区分:無料会員でも解けますが、受験できる問題と解答コードの閲覧には制限があります。有料プランでは制限なく受験・閲覧できます
- こんな人におすすめ:自分のレベルに合った問題を、順番に解き進めたい人
公式サイト:paiza レベルアップ問題集
paiza スキルチェック
出題された問題を解いて、プログラミングの実力をS・A・B・C・Dのランクで判定するサービスです。2026年9月29日時点で全855問(Dランク386問、Cランク167問、Bランク155問、Aランク73問、Sランク74問)が公開されており、毎週木曜日に問題が追加されています。Python3を含む多くの言語で受験できます。
- 料金の区分:受験には会員登録が必要です
- こんな人におすすめ:今の実力を客観的に知りたい人、エンジニアへの転職を考えている人
公式サイト:paiza スキルチェック
AtCoder「APG4bPython」
競技プログラミングのコンテストを開催するAtCoderが公開している、Pythonの入門教材です。プログラムの説明に練習問題がついていて、書いたコードを自動採点システムで確かめられます。プログラミングを一から学びたい人から、少し触れたことがある人までを対象にしています。
- 料金の区分:AtCoderはユーザー登録・コンテストへの参加とも無料です
- こんな人におすすめ:解説と練習問題をセットで進めたい人、競技プログラミングに興味がある人
公式サイト:Python入門 AtCoder Programming Guide for beginners(APG4bPython)
AtCoder Beginners Selection
「AtCoderに登録したけど何をしていいか分からない」という人向けに、過去問から選ばれた10問の問題集です。APG4bPythonを終えたあとの力試しにちょうどよい難しさです。AtCoderでは毎週土曜日21時からAtCoder Beginner Contest(ABC)が開かれていて、慣れてきたらコンテストや5,000問以上の過去問にも挑戦できます。
- 料金の区分:無料(ユーザー登録が必要)
- こんな人におすすめ:実際のコンテストに近い形式で練習したい人
公式サイト:AtCoder Beginners Selection
Progate(Python 問題集・問題集道場)
イラスト中心のスライドで学び、ブラウザ上でコードを書いて確かめられる学習サイトです。Pythonのコースには、基礎文法・繰り返し処理・関数のレッスンのあとに、学んだ内容を復習する「問題集」と、難しさの違う問題に挑戦する「問題集道場」があります。
- 料金の区分:問題集は有料のプラスプランの対象です。無料プランで学べるのは初歩的なレッスンの一部です
- こんな人におすすめ:Progateで学んだ内容を、同じ画面の中で復習したい人
公式サイト:Progate Python
Tech-Joho.info「Python問題集」
Pythonの文法や基本的な処理の書き方を確認できる、無料の問題集です。計算と変数、データ型、リスト、繰り返しなどのテーマ別に問題が並び、解答例と解説もついています。ブラウザ上でPythonを動かして解けるので、パソコンにPythonを入れる前でも試せます。
- 料金の区分:無料
- こんな人におすすめ:入門書を読み終えたあとに、基本の文法を1つずつ確認したい人
- 注意:ページの最終更新は2022年です
公式サイト:Tech-Joho.info Python問題集
中級者向け:英語の練習サイトと「100本ノック」
Exercism(Python)
英語の練習問題サイトです。Pythonのコースには17の概念(コンセプト)に分けられた146の課題があり、提出したコードにボランティアのメンターからヒントやフィードバックをもらうこともできます。
- 料金の区分:無料
- こんな人におすすめ:英語の問題文に慣れたい人、ほかの人の書き方と比べてコードを改善したい人
公式サイト:Exercism Python Track
データサイエンス100本ノック(構造化データ加工編)
一般社団法人データサイエンティスト協会が公開している演習問題です。スーパーの購買データなどを使って、データの集計・加工を練習します。問題はSQL・Python・Rで共通で、Google Colaboratoryなどブラウザで使える環境でも取り組めます。
- 料金の区分:無料(MITライセンスで公開)
- こんな人におすすめ:pandasを使ったデータ分析を仕事で使えるようにしたい人
公式サイト:データサイエンス100本ノック(構造化データ加工編)
言語処理100本ノック 2025
自然言語処理・大規模言語モデル・プログラミングのスキルを、実用的な課題を通して身につけるための問題集です。ウォーミングアップ、正規表現、単語ベクトル、機械学習など10章に分かれています。
- 料金の区分:無料(CC BY 4.0で公開)
- こんな人におすすめ:基本の文法を終え、AIや機械学習の分野に進みたい人
公式サイト:言語処理100本ノック 2025
Pythonの練習問題が解けるおすすめの本

パソコンを開けない移動中にも進めたい方や、問題を体系的に解きたい方には本もおすすめです。出版社のページで内容と価格を確認できた3冊を紹介します(価格は2026年9月時点の定価・税込)。
| 書名 | 出版社・発売日 | 定価(税込) | 向いている人 |
|---|---|---|---|
| 100問でわかるPython | ソシム・2017年10月 | 1,980円 | クイズ形式で基本を確認したい人 |
| 独習Python 第2版 | 翔泳社・2025年5月 | 3,608円 | 章ごとの練習問題で基礎から固めたい人 |
| 新・明解Pythonで学ぶアルゴリズムとデータ構造 第2版 | SBクリエイティブ・2025年11月 | 2,970円 | 探索やソートなどのアルゴリズムを書けるようになりたい人 |
100問でわかるPython(ソシム)
Pythonの基本を、ドリル形式の100問で学ぶ本です。問題とその解説を読み進める形なので、パソコンがなくても取り組めます。発売が2017年のため、最新の書き方は公式ドキュメントなどで補いましょう。
出版社のページ:100問でわかるPython|ソシム
独習Python 第2版(翔泳社)
基礎から型ヒントや非同期処理まで扱う入門書です。章ごとに練習問題と理解度チェックがあり、解答はPDFで提供されています。入門を一通り終えた方が、抜けている知識を問題で確かめるのにも使えます。
出版社のページ:独習Python 第2版|翔泳社
新・明解Pythonで学ぶアルゴリズムとデータ構造 第2版(SBクリエイティブ)
探索・ソート・スタック・キュー・再帰などのアルゴリズムとデータ構造を、実際に動く166編のプログラムで学ぶ本です。AtCoderやpaizaのCランク以上の問題に挑戦したい方の、次の一冊に向いています。
出版社のページ:新・明解Pythonで学ぶアルゴリズムとデータ構造 第2版|SBクリエイティブ
Pythonの練習問題で力をつける進め方
- 基本の問題を「何も見ずに」解く:このページの問題1〜5や、paizaのDランク相当の問題で、for文・if文・リスト・辞書を調べずに書けるか確かめます
- 解けなかった問題は解説を読み、翌日にもう一度解く:答えを写すだけでは身につきにくいので、時間をおいて自分の力で書き直します
- 入力を受け取る問題に慣れる:paizaやAtCoderは、問題9のように入力を受け取って答えを出す形式です。APG4bPythonで形式に慣れておくとスムーズです
- ランクを1つ上げる:Dランクの問題が解けるようになったらCランクへ。関数やクラスを使う問題に進みます
- 自分で小さなプログラムを作る:家計簿の集計、ファイル名の一括変更など、身近な作業を自動化するプログラムを作ると、練習問題で覚えた書き方が定着します
わからない関数や書き方は、Pythonの公式ドキュメント(Python チュートリアル、日本語版あり)で調べる習慣をつけましょう。スマホで問題を解きたい方は「Python学習アプリおすすめ7選」も参考にしてください。
英語が読めると、Pythonの練習の幅が広がる
この記事で紹介したExercismのように、Pythonの問題集や公式ドキュメント、エラーメッセージの多くは英語で書かれています。print(表示する)やsorted(並べ替えた)のように、関数の名前も英語の意味そのままです。英語で調べられるようになると、使える教材も、エラーの答えが見つかる場所も一気に増えます。
Kredo IT留学は、フィリピン・セブ島でITレッスンをすべて英語で受ける留学です。1日8時間(英語のマンツーマンレッスン4時間+ITのグループレッスン4時間)で、英語とITを同時に学びます。公式サイトによると、受講生の92%が英語もITも未経験です(2026年9月時点の掲載)。練習問題に取り組むうちに「英語と一緒に本格的に学びたい」と感じたら、Kredo IT留学の無料カウンセリングで、自分に合う期間やコースを相談してみてください。IT留学の全体像は「IT留学とは?費用・国別比較・1日の流れと選び方」にまとめています。
Pythonの問題集・練習問題についてよくある質問
Pythonの練習問題は無料で解けますか?
はい。AtCoder(APG4bPython、Beginners Selection)、Tech-Joho.info、Exercism、2つの100本ノックは無料で使えます。paizaのレベルアップ問題集も、制限はありますが無料会員で解けます(2026年9月時点)。
入門書を終えたばかりですが、どの問題集から始めればいいですか?
このページの問題1〜5が解けるか確かめてから、paizaのレベルアップ問題集(最初の一歩・基礎文法)かAtCoderのAPG4bPythonに進むのがおすすめです。どちらも日本語で、易しい問題から順番に解けます。
パソコンにPythonを入れなくても練習できますか?
できます。paiza、AtCoder、Tech-Joho.info、Progateはブラウザ上でコードを書いて実行できます。ただし、ファイルを扱うプログラムや自分で作るプログラムはパソコンの方が試しやすいので、慣れてきたらPythonをインストールしましょう。
練習問題が解けないときはどうすればいいですか?
まずエラーメッセージの最後の行を読み、どの行で何が起きているかを確かめましょう。それでも解けなければ解説や解答例を読み、翌日にもう一度、見ずに書き直すと身につきやすくなります。
まとめ:まずは10問、次に問題集サイトで数をこなそう
Pythonのスキルを定着させるには、覚えた文法を使って問題を解く練習が欠かせません。まずはこのページの練習問題10問で今の実力を確かめ、paizaのレベルアップ問題集やAtCoderのAPG4bPythonで、易しい問題から数をこなしていきましょう。基本が固まったら、データ分析や言語処理の100本ノックなど、進みたい分野の問題に挑戦してみてください。
英語でIT・AIを学べるKredo
英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?
当メディアを運営しているKredoは、英語×ITをオンラインで学ぶ「Kredoオンラインキャンプ」と、フィリピンのセブ島で英語とIT・AIを学ぶ「KredoIT留学」「KredoAI留学」を提供しています。これまでの卒業生は3,000名以上。卒業生の多くが、国内外のIT企業への転職、フリーランスなどへのキャリアチェンジを実現しています。これからの時代に必要な英語×IT・AIのスキルを身につけてグローバルに活躍しませんか?










