【全部解ける?】Python基礎 10本ノック
問題1
次のコードの出力結果はどうなりますか?
a = 13
b = 5
c = a // b
print(c)
1. 2.6
2. 3
3. 8
4. 2
解答
- 2
解説: a // b は整数部分のみを出力します。
また、その他の選択肢に関しては
- 2.6 は a / b
- 3 は a % b
- 8 は a - b
で出力することができます。
問題2
次のコードの出力結果はどうなりますか?
s1, s2, s3 = "a", "", 1
print(s1 and s2 or s3)
1. "a"
2. ""
3. 1
4. エラーが発生する
解答
- 1
解説: ブール演算子について確認をします。
ブール演算子(and・or・not)
式 x and y は、まずxを評価する。xが偽ならxの値を返し、それ以外の場合はyを評価し、値を返す。
式 x or y は、まずxを評価する。xが真ならxの値を返し、それ以外の場合はyを評価し、値を返す。
また、それぞれの真偽値を確認すると、
print(bool("a"))
print(bool(""))
print(bool(1))
True
False
True
となるため、True and False or True
となり、答えは3.になります。
問題3
次のコードの出力結果はどうなりますか?
def func_args(arg1, arg2=5, **kwargs):
print(kwargs)
func_args(arg1 = 1, arg2 = 2, arg3 = 3)
1. {'arg1': 1, 'arg3': 3}
2. {'arg2': 2, 'arg3': 3}
3. {'arg3': 3}
4. {'arg1': 1, 'arg2': 2, 'arg3': 3}
解答
- {'arg3': 3}
**kwargsは辞書で受け取るため、出力結果は辞書型となります。
また、仮引数に対応するキーワードを除いたすべてのキーワード引数が入るため、arg3 = 3
のみを受け取ります。
問題4
次のコードの出力結果はどうなりますか?
i = 1
def f(arg=i):
i = 2
i = 3
print(arg)
i = 4
f()
1. 1
2. 2
3. 3
4. 4
解答
- 1
解説: 関数の呼び出し時に引数を与えていない場合、デフォルト値が使用されます。
また、デフォルト値の評価は定義している側のスコープになるため、i = 1 となります。
試しに以下のコードを実行するとエラーになります。
def g(arg=j):
j = 2
j = 3
print(arg)
j = 4
g()
NameError: name 'j' is not defined
問題5
次のコードの出力結果はどうなりますか?
num_lists = [1, 2, 3, 0, 1, 2, 1, 3, 2]
num_lists.index(2, 2, 9)
1. 0
2. 2
3. 3
4. 5
解答
- 5
解説: list.index(x, start, end)はxに等しい最初のアイテムのインデックスを返すメソッドになります。
※endは含まない
問題6
次の選択肢のうち、タプルでないのはどれですか?
1. my_tuple = 10, "a", [1, 2]
2. my_tuple = ()
3. my_tuple = ("hello")
4. my_tuple = (1, 2, 3)
解答
- my_tuple = ("hello")
解説: タプルはカンマで区切られた値からなりますが、入力の際は囲みの丸括弧は必須ではありません。(式の一部として使う場合は必要)
sample_tuple = 1, "a"
print(type(sample_tuple))
print(sample_tuple)
<class 'tuple'>
(1, 'a')
出力の際は常に丸括弧がつきます。
アイテムが0のタプルは以下のように表すことができます。
empty_tuple = ()
print(type(empty_tuple))
print(empty_tuple)
<class 'tuple'>
()
アイテムが1のタプルは以下のように表すことができます。
single_tuple = "hello",
print(type(single_tuple))
print(single_tuple)
<class 'tuple'>
('hello',)
よって答えは3.となります。
my_tuple = "hello"
print(type(my_tuple))
<class 'str'>
問題7
次の選択肢のうち、ミュータブルなオブジェクトはどれですか?
1. float
2. str
3. dict
4. tuple
解答
- dict
ミュータブルは値を変更できるオブジェクトであり、イミュータブルは値を変更できないオブジェクトになります。イミュータブルに関して、別の値を格納したい場合は、新しいオブジェクトを生成する必要があります。
問題8
次のコードの出力結果はどうなりますか?
x = 10
def my_func():
print(x, end=",")
my_func()
print(x)
1. 10,10
2. エラーが発生する
解答
- 10,10
解説: Pythonのスコープにはローカルスコープ・グローバルスコープ・ビルトインスコープが存在し、ローカルスコープ➝グローバルスコープ➝ビルトインスコープの順に参照します。
今回my_func
にあるprint(x, end=",")
は、ローカルスコープにx
がないため、グローバルスコープのx
を参照します。
問題9
次のコードの出力結果はどうなりますか?
numbers = [1, 2, 3, 4, 5]
result = 0
for num in numbers:
if num == 2:
continue
result += num
if num == 4:
break
print(result)
1. 10
2. 8
3. 1
4. 15
解答
- 8
解説: continue
は残りの処理をスキップして次のループ処理に移ります。
break
は文を囲うもっとも内側のforまたはwhileのループから抜けます。
よって、num == 2
の時はresult += num
が行われず、
num == 4
の時にループを抜けるため、
1 + 3 + 4 = 8
となります。
問題10
次のコードの出力結果はどうなりますか?
my_dict = {"name": "Alice", "age": 25}
my_dict.pop(25)
print(my_dict)
1. {'name': 'Alice'}
2. {'age': 25}
3. {'name': 'Alice', 'age': 25}
4. エラー発生する
解答
- エラー発生する
解説: popメソッドは引数にキーを指定してその要素を削除し、削除された値を返します。
my_dict = {"name": "Alice", "age": 25}
print(my_dict.pop("age"))
25
おわりに
Pythonの基礎的な問題を10問出題しました!
Xでも定期的に問題を出しているので良かったらフォローしてくれると嬉しいです。
ノック形式の書籍を2冊出しているので、こっちも良かったら挑戦してみてね。
Python基礎 100本ノック
Python組み込み関数 100本ノック
Discussion