問題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
Python quiz
Pythonの基礎を選択問題とコード入力問題で確認し、迷ったコードはその場で実行できます。
変数、計算、if文、リスト、正規表現、クラス、例外処理の基本を短い問題で確認できます。選択問題で考え方を押さえ、コード入力問題で自分の手で書く練習ができます。
小テストで迷ったコードを入れて実行できます。処理はブラウザ内で行います。
まだ実行していません。
初回実行時はPython環境の読み込みに時間がかかる場合があります。
Quiz mode
まず4択問題で考え方を確認するか、コード入力問題で自分で書く練習をするかを選べます。
Unit
苦手な単元だけに絞って練習できます。個人や団体を特定できる固有名詞を使わない汎用的な類題にしています。
Implementation set
画像の問題をそのまま練習できる形で掲載しています。解答は上の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 から Z0 から 9a から zprint(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
条件に当てはまるとき、どちらが表示されるでしょうか。
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
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
条件を上から確認したとき、表示される文字を選んでください。
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
クラスのインスタンスが持つ値として表示される数を選んでください。
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
例外が起きたとき、表示される文字を選んでください。
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文字の単語だけを数えた結果を選んでください。
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)
答えを選んでください。
短いコードを自分で入力して確認します。スペースの違いはある程度吸収して判定します。
0 / 29 問 正解
C1
変数nameに入っている文字を表示する1行を書いてください。
name = "Python"
# ここに1行
コードを入力して確認してください。
C2
scoreが60以上なら処理に入るif文の1行を書いてください。
score = 80
# ここに1行
print("合格")
コードを入力して確認してください。
C3
空のリストtasksに「Pythonを練習」という文字を追加する1行を書いてください。
tasks = []
# ここに1行
コードを入力して確認してください。
C4
priceとcountを掛けた値を返す1行を書いてください。
def calc_total(price, count):
# ここに1行
コードを入力して確認してください。
C5
xが3で割り切れて、かつ15以上ならOKを返すif文の1行を書いてください。
def check_number(x):
# ここに1行
return "OK"
return "NG"
コードを入力して確認してください。
C6
ループの中でtotalにnumberを掛ける1行を書いてください。
total = 1
for number in range(1, 5):
# ここに1行
コードを入力して確認してください。
C7
数字に変換できないときのエラーを受け取るexcept文の1行を書いてください。
try:
number = int(text)
print(number)
# ここに1行
print("変換できません")
コードを入力して確認してください。
C8
widthとheightを掛けた値を返す1行を書いてください。
def rectangle_area(width, height):
# ここに1行
コードを入力して確認してください。
C9
単語の文字数が4なら処理に入るif文の1行を書いてください。
for word in words:
# ここに1行
count += 1
コードを入力して確認してください。
C10
numがfirstと違うときに処理に入るif文の1行を書いてください。
first = nums[0]
for num in nums:
# ここに1行
return "NG"
コードを入力して確認してください。
C11
A12bのような「英大文字、数字2文字、英小文字」に一致するpatternの1行を書いてください。
import re
# ここに1行
print(re.search(pattern, "A12b") is not None)
コードを入力して確認してください。
C12
add_stockメソッドの中で在庫数を1増やす1行を書いてください。
def add_stock(self):
# ここに1行
コードを入力して確認してください。
C13
点数が60点未満なら処理に入るif文の1行を書いてください。
for score in scores:
# ここに1行
return "FAIL"
コードを入力して確認してください。
C14
nameを受け取るgreet関数の定義行を書いてください。
# ここに1行
return f"{name}さん、こんにちは"
コードを入力して確認してください。
C15
nameを使ったあいさつ文を返す1行を書いてください。
def greet(name):
# ここに1行
コードを入力して確認してください。
C16
priceと、初期値0.1のrateを受け取る関数定義行を書いてください。
# ここに1行
return int(price * (1 + rate))
コードを入力して確認してください。
C17
add(4, 5)の結果をtotalに入れる1行を書いてください。
def add(a, b):
return a + b
# ここに1行
print(total)
コードを入力して確認してください。
C18
aとbのうち大きい方を返す1行を書いてください。
def larger(a, b):
# ここに1行
コードを入力して確認してください。
C19
textの最初の文字を表示する1行を書いてください。
text = "Python"
# ここに1行
コードを入力して確認してください。
C20
temperatureが20以上ならwarmを表示するelifの1行を書いてください。
if temperature >= 30:
print("hot")
# ここに1行
print("warm")
コードを入力して確認してください。
C21
偶数だったときにcountを1増やす1行を書いてください。
for number in numbers:
if number % 2 == 0:
# ここに1行
コードを入力して確認してください。
C22
123-4567の形に一致するpatternの1行を書いてください。
import re
# ここに1行
print(re.fullmatch(pattern, "123-4567") is not None)
コードを入力して確認してください。
C23
Counterのvalueにamountを足す1行を書いてください。
def add(self, amount):
# ここに1行
コードを入力して確認してください。
C24
0で割ったときの例外を受け取るexcept文の1行を書いてください。
try:
print(10 // 0)
# ここに1行
print("割れません")
コードを入力して確認してください。
C25
xが4の倍数で20より大きいときだけOKを返すif文の1行を書いてください。
def check_value(x):
# ここに1行
return "OK"
return "NG"
コードを入力して確認してください。
C26
wordが5文字なら処理に入るif文の1行を書いてください。
for word in words:
# ここに1行
count += 1
コードを入力して確認してください。
C27
numがfirstと違うときに処理に入るif文の1行を書いてください。
first = nums[0]
for num in nums:
# ここに1行
return "NG"
コードを入力して確認してください。
C28
目、必要なら鼻、口の順に並ぶ顔文字に一致するpatternの1行を書いてください。
import re
# ここに1行
print(re.search(pattern, "Good job :-D") is not None)
コードを入力して確認してください。
C29
add_likeメソッドの中でlikesを1増やす1行を書いてください。
def add_like(self):
# ここに1行
コードを入力して確認してください。
問題で迷った項目は、学習ページで短いサンプルを動かしながら復習できます。
Python学習へ