【初心者向け】Pythonのデバッグ問題

問題1:文字列の連結ミス
name = "Yusei"
age = 25
print("Name: " + name + ", Age: " + age)
エラーの原因は?
A. +
演算子の使い方が間違っている
B. age
が整数型で文字列と連結できない
C. print
関数の文法が間違っている
正解: B
解説: Pythonでは文字列と整数は直接+
で連結できません。str(age)
で文字列化する必要があります。
問題2:ループ中の変数スコープ
for i in range(3):
value = i * 2
print(value)
このコードの出力は?
A. エラーが出る
B. value
はループの外なので参照できない
C. value
は最後のループの値(4)になる
正解: C
解説: Pythonではfor
ループのスコープは関数レベルではないため、value
はループ終了後も使用可能。
問題3:変数のスコープエラー
def calculate():
result = 10 + 20
print(result)
エラーの原因は?
A. result
がグローバル変数ではないため参照できない
B. print
の文法ミス
C. result
が定義されていない関数内で使われている
正解: A
解説: result
はcalculate()
関数内で定義されたローカル変数なので、関数外では参照できません。
問題4:型エラーによる比較
number = 10
text = "10"
if number == text:
print("Same")
このコードの出力は?
A. Same
と表示される
B. エラーが発生する
C. 何も表示されない
正解: C
解説: 整数10
と文字列"10"
はPythonでは異なる型なので比較結果はFalse
となり、何も出力されません。
問題5:インデントエラー
if True:
print("Hello")
エラーの原因は?
A. print
の文法ミス
B. 条件式にエラーがある
C. インデントが正しくない
正解: C
解説: Pythonではコードブロックにインデントが必要です。print
の前にスペースを入れる必要があります。
問題6:条件分岐の文法ミス
score = 85
if score >= 90:
print("Excellent")
elif score >= 70 and < 90:
print("Good")
else:
print("Average")
このコードの文法エラーはどこ?
A. elif
行で不完全な条件式になっている
B. score
の値が文字列になっている
C. if
とelse
の順番が逆になっている
正解: A
解説: elif score >= 70 and < 90:
は文法エラーです。正しくは elif 70 <= score < 90:
のように記述します。
問題7:append()
の戻り値の勘違い
my_list = [1, 2, 3]
new_list = my_list.append(4)
print(new_list)
出力は?
A. [1, 2, 3, 4]
B. [1, 2, 3]
C. None
正解: C
解説: list.append()
は戻り値を返さない(Noneを返す)メソッドです。my_list
は更新されますが、new_list
にはNone
が入ります。
問題8:整数除算と割り切れない除算
a = 5
b = 2
result = a / b
print(result == 2)
このコードの出力は?
A. True
B. False
C. エラーになる
正解: B
解説: 5 / 2
は 2.5
を返します。Python3では /
は浮動小数点除算です。整数除算したい場合は a // b
を使います。
問題9:try-except
の構文ミス
try:
print("Start")
x = 1 / 0
except:
print("Something went wrong")
エラーの原因は?
A. try
文の中にエラーがない
B. except
の行のインデントが間違っている
C. ZeroDivisionError
をキャッチできていない
正解: B
解説: Pythonのtry
-except
ブロックでは、except
の中身もインデントする必要があります。
問題10:strip()
の使い方の誤解
text = "###Hello###"
cleaned = text.strip("#")
print(cleaned)
出力は?
A. Hello
B. ###Hello###
C. Hello###
正解: A
解説: strip()
は先頭と末尾にある指定文字を除去します。この場合、先頭と末尾の #
をすべて除去し、Hello
が残ります。
問題11:ループとbreak
の挙動
for i in range(5):
if i == 3:
break
print(i)
else:
print("Loop finished")
出力は?
A. 0 1 2 3 Loop finished
B. 0 1 2
C. 0 1 2 Loop finished
正解: B
解説: for
文のelse
は、ループが途中でbreak
されなかったときに実行されます。この場合、break
が実行されたため、else
ブロックは実行されません。
問題12:リスト内包表記のスコープ
squares = [x**2 for x in range(5)]
print(x)
このコードの出力は?
A. 4
B. NameError
になる
C. [0, 1, 4, 9, 16]
正解: B
解説: Python 3 ではリスト内包表記内の変数 x
はローカルスコープであり、外からはアクセスできません(Python 2系では違う挙動)。
問題13:None
との比較ミス
value = None
if value == None:
print("It's None!")
このコードの改善点として適切なのは?
A. value = null
と書くべき
B. if value is None:
を使うべき
C. value == None
は必ず False
になる
正解: B
解説: None
との比較には ==
よりも is
を使うのが Pythonic です。is
はオブジェクトの同一性を比較します。
問題14:再帰関数の停止条件ミス
def countdown(n):
print(n)
countdown(n - 1)
countdown(3)
このコードの問題点は?
A. print
が無限に呼ばれる
B. 再帰の停止条件がないため RecursionError
が起きる
C. n
がリストでないため TypeError
正解: B
解説: この関数には停止条件(ベースケース)がないため、再帰が終わらず RecursionError
を引き起こします。例えば if n == 0: return
を追加する必要があります。
問題15:文字列フォーマットの誤り
name = "Yusei"
print("Hello, {name}")
このコードの出力は?
A. Hello, Yusei
B. Hello, {name}
C. エラーになる
正解: B
解説: Pythonの .format()
を使っていないため、波括弧はそのまま出力されます。
正しくは:print("Hello, {}".format(name))
または:print(f"Hello, {name}")
(f文字列)
問題16:クラス属性 vs インスタンス属性の混同
class Dog:
name = "Pochi"
d1 = Dog()
d2 = Dog()
d1.name = "Shiro"
print(d2.name)
このコードの出力は?
A. Pochi
B. Shiro
C. エラーになる
正解: A
解説: name
はクラス変数ですが、d1.name = "Shiro"
によりインスタンス変数が d1
に追加されただけです。d2
には影響しません。
問題17:タプルの変更
items = (1, 2, 3)
items[0] = 100
このコードのエラー内容は?
A. IndexError
B. TypeError
C. SyntaxError
正解: B
解説: タプルはイミュータブル(変更不可)なデータ型です。要素の変更を試みると TypeError
が発生します。
問題18:文字列の分割結果の型
data = "apple,banana,grape"
fruits = data.split(",")
print(fruits[3])
このコードのエラーは?
A. ValueError
B. IndexError
C. TypeError
正解: B
解説: split(",")
により ['apple', 'banana', 'grape']
という長さ3のリストになります。インデックス3は存在しないため IndexError
。
問題19:ネスト構造の構文ミス
for i in range(3):
if i % 2 == 0:
print(i)
else:
print("Odd")
エラーの原因は?
A. else
文の条件式がない
B. print("Odd")
のインデントが不足している
C. range(3)
が正しくない
正解: B
解説: Pythonではインデントが文法の一部です。else:
の次の行は必ず同じ深さでインデントする必要があります。
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。