基礎を小テストで確認

変数、計算、if文、リスト、正規表現、クラス、例外処理の基本を短い問題で確認できます。選択問題で考え方を押さえ、コード入力問題で自分の手で書く練習ができます。

問題を選ぶ

コードで確認

小テストで迷ったコードを入れて実行できます。処理はブラウザ内で行います。

Python

実行結果

準備完了
まだ実行していません。

初回実行時はPython環境の読み込みに時間がかかる場合があります。

Quiz mode

解く問題を選ぶ

まず4択問題で考え方を確認するか、コード入力問題で自分で書く練習をするかを選べます。

Unit

単元を選ぶ

苦手な単元だけに絞って練習できます。個人や団体を特定できる固有名詞を使わない汎用的な類題にしています。

Implementation set

Python類題セット

画像の問題をそのまま練習できる形で掲載しています。解答は上のPythonエディターに書いて、動作例と同じ出力になるか確認してください。

問題1

条件分岐

正の整数 x を引数にとり、x が4の倍数かつ20以上ならば文字列 'OK' を、そうでなければ文字列 'NG' を返す関数 check4(x) を定義してください。

動作例

print(check4(24))
print(check4(18))
print(check4(16))
print(check4(40))
print(check4(22))

出力

OK
NG
NG
OK
NG

問題2

リストと文字数

英単語のリスト words を引数にとり、その中にある文字数が4文字の単語の個数を返す関数 count4(words) を定義してください。

動作例

print(count4(['book', 'apple', 'desk']))
print(count4(['pen', 'tree', 'blue', 'orange']))
print(count4(['dog', 'cat', 'banana']))
print(count4(['game', 'play', 'read']))

出力

2
2
0
3

問題3

すべての要素を確認

整数のリスト scores を引数にとり、すべての点数が60点以上なら文字列 'PASS' を、1つでも60点未満の点数があれば文字列 'FAIL' を返す関数 check_scores(scores) を定義してください。

なお、scores には1つ以上の要素が入っているものとします。

動作例

print(check_scores([80, 75, 90]))
print(check_scores([60, 60, 60]))
print(check_scores([90, 55, 70]))
print(check_scores([100, 85, 59]))

出力

PASS
PASS
FAIL
FAIL

問題4

正規表現

文字列 s を引数にとり、その中に次の条件を満たすコードが含まれていれば True、含まれていなければ False を返す関数 has_code(s) を定義してください。

コードの条件は 英大文字 → 数字2文字 → 英小文字 です。例えば、A12b や Z99x は条件を満たします。

  • 英大文字: A から Z
  • 数字: 0 から 9
  • 英小文字: a から z

動作例

print(has_code('My code is A12b.'))
print(has_code('Z99x is available'))
print(has_code('a12b'))
print(has_code('A1b'))
print(has_code('A123b'))
print(has_code('No code here'))

出力

True
True
False
False
False
False

問題5

クラス

次の属性とメソッドを持つ商品用のクラス Product を定義してください。

コンストラクタは Product(name, price, stock) の3つの引数を受け取り、属性 name、price、stock を持ちます。また、在庫数を1増やすメソッド add_stock() を持ちます。

  • name: 商品名
  • price: 商品の価格
  • stock: 在庫数

動作例

product1 = Product('pen', 120, 5)
product2 = Product('notebook', 300, 2)

product1.add_stock()
product2.add_stock()
product2.add_stock()

print(product1.name)
print(product1.stock)
print(product2.price)
print(product2.stock)

出力

pen
6
300
4

Similar set

画像の問題の類題

上の5問と同じ考え方で解ける、数値や条件を変えた練習問題です。

類題1

条件分岐

正の整数 x を引数にとり、x が5の倍数かつ30以上ならば文字列 'OK' を、そうでなければ文字列 'NG' を返す関数 check5(x) を定義してください。

動作例

print(check5(35))
print(check5(25))
print(check5(30))
print(check5(42))
print(check5(50))

出力

OK
NG
OK
NG
OK

類題2

リストと文字数

英単語のリスト words を引数にとり、その中にある文字数が5文字の単語の個数を返す関数 count5_words(words) を定義してください。

動作例

print(count5_words(['apple', 'pen', 'grape']))
print(count5_words(['train', 'bus', 'plane', 'ship']))
print(count5_words(['red', 'blue', 'green']))
print(count5_words(['light', 'sound', 'music']))

出力

2
2
1
3

類題3

すべての要素を確認

整数のリスト scores を引数にとり、すべての点数が70点以上なら文字列 'PASS' を、1つでも70点未満の点数があれば文字列 'FAIL' を返す関数 check_scores70(scores) を定義してください。

動作例

print(check_scores70([70, 75, 90]))
print(check_scores70([80, 69, 100]))
print(check_scores70([95, 88, 72]))
print(check_scores70([100, 70, 69]))

出力

PASS
FAIL
PASS
FAIL

類題4

正規表現

文字列 s を引数にとり、その中に 英小文字 → 数字3文字 → 英大文字 の順に並ぶコードが含まれていれば True、含まれていなければ False を返す関数 has_code2(s) を定義してください。

例えば、a123Z や m007Q は条件を満たします。

動作例

print(has_code2('code a123Z found'))
print(has_code2('m007Q is ready'))
print(has_code2('A123z'))
print(has_code2('a12Z'))
print(has_code2('a123z'))
print(has_code2('none'))

出力

True
True
False
False
False
False

類題5

クラス

次の属性とメソッドを持つ本用のクラス Book を定義してください。

コンストラクタは Book(title, pages, stock) の3つの引数を受け取り、属性 title、pages、stock を持ちます。また、在庫数を1増やすメソッド add_stock() を持ちます。

動作例

book1 = Book('Python入門', 180, 1)
book2 = Book('Web基礎', 220, 3)

book1.add_stock()
book1.add_stock()
book2.add_stock()

print(book1.title)
print(book1.stock)
print(book2.pages)
print(book2.stock)

出力

Python入門
3
220
4

基礎小テスト

選択肢を押すと正誤と解説が出ます。迷った問題は「コードで確認」からエディターで動かせます。

0 / 31 問 正解

Q1

表示される文字は?

次のコードを実行した結果を選んでください。

name = "Python"
print(name)

答えを選んでください。

Q2

計算結果は?

掛け算の結果として表示される値を選んでください。

price = 120
count = 3
print(price * count)

答えを選んでください。

Q3

if文の結果は?

条件に当てはまるとき、どちらが表示されるでしょうか。

score = 80
if score >= 60:
    print("合格")
else:
    print("もう一度練習")

答えを選んでください。

Q4

リストの合計は?

sumで計算される合計を選んでください。

scores = [70, 80, 90]
print(sum(scores))

答えを選んでください。

Q5

辞書から取り出される値は?

キーを指定したときに表示される文字を選んでください。

profile = {"tool": "memo", "level": 1}
print(profile["tool"])

答えを選んでください。

Q6

関数で値を返す言葉は?

関数の結果を呼び出し元へ返すキーワードを選んでください。

def greet(name):
    return f"こんにちは、{name}さん"

答えを選んでください。

Q7

条件を満たすと返る値は?

関数の条件に当てはまるとき、表示される文字を選んでください。

def check_number(x):
    if x % 3 == 0 and x >= 15:
        return "OK"
    return "NG"

print(check_number(18))

答えを選んでください。

Q8

繰り返し計算の結果は?

for文で掛け算を繰り返したあと、表示される値を選んでください。

total = 1
for number in range(1, 5):
    total *= number

print(total)

答えを選んでください。

Q9

例外処理で表示される文字は?

エラーが起きたときに、どの出力になるかを選んでください。

try:
    number = int("abc")
    print(number)
except ValueError:
    print("変換できません")

答えを選んでください。

Q10

面積を計算した結果は?

関数を呼び出したあと、表示される値を選んでください。

def rectangle_area(width, height):
    return width * height

print(rectangle_area(8, 5))

答えを選んでください。

Q11

文字数を数える関数の結果は?

4文字の単語だけを数えた結果を選んでください。

def count4(words):
    count = 0
    for word in words:
        if len(word) == 4:
            count += 1
    return count

print(count4(["tree", "blue", "peach", "grape"]))

答えを選んでください。

Q12

すべて同じか確認する

リスト内の数字を順番に確認した結果を選んでください。

def all_same(nums):
    first = nums[0]
    for num in nums:
        if num != first:
            return "NG"
    return "OK"

print(all_same([80, 80, 90]))

答えを選んでください。

Q13

正規表現の判定は?

条件を満たすコードが文字列に含まれるかを選んでください。

import re

pattern = r"[A-Z][0-9]{2}[a-z]"
print(re.search(pattern, "ID is A12b") is not None)

答えを選んでください。

Q14

クラスのメソッド実行後の値は?

在庫数を増やすメソッドを呼び出したあと、表示される値を選んでください。

class Product:
    def __init__(self, name, price, stock):
        self.name = name
        self.price = price
        self.stock = stock

    def add_stock(self):
        self.stock += 1

product = Product("pen", 120, 5)
product.add_stock()
print(product.stock)

答えを選んでください。

Q15

すべて合格点か確認する

1つずつ点数を確認した結果を選んでください。

def check_scores(scores):
    for score in scores:
        if score < 60:
            return "FAIL"
    return "PASS"

print(check_scores([60, 72, 85]))

答えを選んでください。

Q16

引数の順番を確認する

関数を呼び出したあと、表示される文字を選んでください。

def make_label(name, count):
    return f"{name}:{count}"

print(make_label("memo", 3))

答えを選んでください。

Q17

デフォルト引数の結果は?

引数rateを省略して呼び出したときの表示を選んでください。

def add_tax(price, rate=0.1):
    return int(price * (1 + rate))

print(add_tax(100))

答えを選んでください。

Q18

関数内の変数の値は?

double(7)を呼び出した結果を選んでください。

def double(x):
    result = x * 2
    return result

print(double(7))

答えを選んでください。

Q19

returnで処理が終わる流れは?

judge(20)を実行したときの表示を選んでください。

def judge(age):
    if age < 18:
        return "NG"
    return "OK"

print(judge(20))

答えを選んでください。

Q20

返り値を計算に使う

関数の返り値を変数に入れたあと、表示される値を選んでください。

def add(a, b):
    return a + b

total = add(4, 5)
print(total * 2)

答えを選んでください。

Q21

文字列の先頭は?

文字列から取り出される1文字を選んでください。

text = "Python"
print(text[0])

答えを選んでください。

Q22

elifの分岐は?

条件を上から確認したとき、表示される文字を選んでください。

temperature = 28

if temperature >= 30:
    print("hot")
elif temperature >= 20:
    print("warm")
else:
    print("cool")

答えを選んでください。

Q23

偶数はいくつ?

for文で数えた結果を選んでください。

numbers = [1, 2, 3, 4, 5]
count = 0

for number in numbers:
    if number % 2 == 0:
        count += 1

print(count)

答えを選んでください。

Q24

数字コードの判定は?

文字列が正規表現の形に当てはまるかを選んでください。

import re

pattern = r"\d{3}-\d{4}"
print(re.fullmatch(pattern, "123-4567") is not None)

答えを選んでください。

Q25

メソッドを2回呼ぶと?

クラスのインスタンスが持つ値として表示される数を選んでください。

class Counter:
    def __init__(self):
        self.value = 0

    def add(self, amount):
        self.value += amount

counter = Counter()
counter.add(3)
counter.add(2)
print(counter.value)

答えを選んでください。

Q26

0で割ったときの処理は?

例外が起きたとき、表示される文字を選んでください。

try:
    print(10 // 0)
except ZeroDivisionError:
    print("割れません")

答えを選んでください。

Q27

倍数と大小を同時に判定する

条件に当てはまるとき、表示される文字を選んでください。

def check_value(x):
    if x % 4 == 0 and x > 20:
        return "OK"
    return "NG"

print(check_value(28))

答えを選んでください。

Q28

5文字の単語を数える

リストの中で5文字の単語だけを数えた結果を選んでください。

def count5(words):
    count = 0
    for word in words:
        if len(word) == 5:
            count += 1
    return count

print(count5(["water", "sun", "green", "book", "light"]))

答えを選んでください。

Q29

全要素が同じか判定する

リストを順番に確認した結果を選んでください。

def same_all(nums):
    first = nums[0]
    for num in nums:
        if num != first:
            return "NG"
    return "OK"

print(same_all([6, 6, 7, 6]))

答えを選んでください。

Q30

顔文字の形を判定する

文字列の中に条件を満たす顔文字が含まれるかを選んでください。

import re

pattern = r"[:;][-=]?[)(DP]"
print(re.search(pattern, "Good job :-D") is not None)

答えを選んでください。

Q31

いいね数を増やすクラス

メソッドを2回呼び出したあと、表示される数を選んでください。

class MessagePost:
    def __init__(self, username, content, likes):
        self.username = username
        self.content = content
        self.likes = likes

    def add_like(self):
        self.likes += 1

post = MessagePost("writer1", "Python practice", 5)
post.add_like()
post.add_like()
print(post.likes)

答えを選んでください。

基礎を復習したいとき

問題で迷った項目は、学習ページで短いサンプルを動かしながら復習できます。

Python学習へ