💯

【全部解ける?】Python基礎 10本ノック

に公開

問題1

次のコードの出力結果はどうなりますか?

a = 13
b = 5
c = a // b

print(c)
選択肢
1. 2.6
2. 3
3. 8
4. 2
解答
  1. 2

解説: a // b は整数部分のみを出力します。

また、その他の選択肢に関しては

  1. 2.6 は a / b
  2. 3 は a % b
  3. 8 は a - b

で出力することができます。

問題2

次のコードの出力結果はどうなりますか?

s1, s2, s3 = "a", "", 1

print(s1 and s2 or s3)
選択肢
1. "a"
2. ""
3. 1
4. エラーが発生する
解答
  1. 1

解説: ブール演算子について確認をします。

ブール演算子(and・or・not)

式 x and y は、まずxを評価する。xが偽ならxの値を返し、それ以外の場合はyを評価し、値を返す。

式 x or y は、まずxを評価する。xが真ならxの値を返し、それ以外の場合はyを評価し、値を返す。

また、それぞれの真偽値を確認すると、

In
print(bool("a"))
print(bool(""))
print(bool(1))
Out
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}
解答
  1. {'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. 1

解説: 関数の呼び出し時に引数を与えていない場合、デフォルト値が使用されます。
また、デフォルト値の評価は定義している側のスコープになるため、i = 1 となります。

試しに以下のコードを実行するとエラーになります。

In
def g(arg=j):
    j = 2
    j = 3
    print(arg)

j = 4
g()
Out
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
解答
  1. 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)
解答
  1. my_tuple = ("hello")

解説: タプルはカンマで区切られた値からなりますが、入力の際は囲みの丸括弧は必須ではありません。(式の一部として使う場合は必要)

In
sample_tuple = 1, "a"
print(type(sample_tuple))
print(sample_tuple)
Out
<class 'tuple'>
(1, 'a')

出力の際は常に丸括弧がつきます。

アイテムが0のタプルは以下のように表すことができます。

In
empty_tuple = ()
print(type(empty_tuple))
print(empty_tuple)
Out
<class 'tuple'>
()

アイテムが1のタプルは以下のように表すことができます。

In
single_tuple = "hello",
print(type(single_tuple))
print(single_tuple)
Out
<class 'tuple'>
('hello',)

よって答えは3.となります。

In
my_tuple = "hello"
print(type(my_tuple))
Out
<class 'str'>

問題7

次の選択肢のうち、ミュータブルなオブジェクトはどれですか?

選択肢
1. float
2. str
3. dict
4. tuple
解答
  1. dict

ミュータブルは値を変更できるオブジェクトであり、イミュータブルは値を変更できないオブジェクトになります。イミュータブルに関して、別の値を格納したい場合は、新しいオブジェクトを生成する必要があります。

問題8

次のコードの出力結果はどうなりますか?

x = 10

def my_func():
    print(x, end=",")

my_func()
print(x)
選択肢
1. 10,10
2. エラーが発生する
解答
  1. 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
解答
  1. 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. エラー発生する
解答
  1. エラー発生する

解説: popメソッドは引数にキーを指定してその要素を削除し、削除された値を返します。

In
my_dict = {"name": "Alice", "age": 25}

print(my_dict.pop("age"))
Out
25

おわりに

Pythonの基礎的な問題を10問出題しました!
Xでも定期的に問題を出しているので良かったらフォローしてくれると嬉しいです。

ノック形式の書籍を2冊出しているので、こっちも良かったら挑戦してみてね。

Python基礎 100本ノック
https://zenn.dev/python_academia/books/eabcc6b22afff5

Python組み込み関数 100本ノック
https://zenn.dev/python_academia/books/94b58e7ef9fe42

Discussion