Pythonの文法に関する問題を10問出題します。
問題の選出方法はTwitterにて定期的に出題している問題で、正答率があまり良くなかった範囲から選出しました。
ご参考になれば幸いです。
問題1(計算問題)
次のコードの出力結果は?
a = 13
b = 5
c = a // b
print(c)
➀ 2.6
➁ 3
➂ 8
➃ 2
解答
④ 2a // b は整数部分のみを出力します。
また、その他の選択肢に関しては
① 2.6 は a / b
② 3 は a % b
③ 8 は a - b
となります。
割り算は常にfloat型になることに注意しましょう。
print(20/5)
4.0
問題2(ブール演算子)
次のコードの出力結果は?
s1, s2, s3 = "a", "", 1
s1 and s2 or s3
➀ "a"
➁ ""
➂ 1
➃ エラーになる
解答
③ 1ブール演算子について確認をします。
ブール演算子(and・or・not)
優先順位:not > and > or
式 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 となり、答えは 1 になります。
問題3(関数の引数)
次のコードの出力結果は?
def func_args(arg1, arg2=5, **kwargs):
print(kwargs)
func_args(arg1 = 1, arg2 = 2, arg3 = 3)
➀ {'arg1': 1, 'arg3': 3}
➁ {'arg2': 2, 'arg3': 3}
➂ {'arg3': 3}
➃ {'arg1': 1, 'arg2': 2, 'arg3': 3}
解答
③ {'arg3': 3}**kwargsは辞書で受け取るため、出力結果は辞書型となります。
また、仮引数に対応するキーワードを除いたすべてのキーワード引数が入るため、arg3 = 3 のみを受け取ります。
**kwargsは最後でのみ定義できます。
問題4(関数のデフォルト値)
次のコードの出力結果は?
i = 1
def f(arg=i):
i = 2
i = 3
print(arg)
i = 4
f()
➀ 1
➁ 2
➂ 3
➃ 4
解答
① 1関数の呼び出し時に引数を与えていない場合、デフォルト値が使用されます。
また、デフォルト値の評価は定義している側のスコープになるため、i = 1 となります。
試しに以下のコードを実行するとエラーになります。
def g(arg=j):
j = 2
j = 3
print(arg)
j = 4
g()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-7-174e3da7ced9> in <cell line: 1>()
----> 1 def g(arg=j):
2 j = 2
3 j = 3
4 print(arg)
5 j = 4
NameError: name 'j' is not defined
問題5(リストのメソッド)
次のコードの出力結果は?
num_lists = [1, 2, 3, 0, 1, 2, 1, 3, 2]
num_lists.index(2, 2, 9)
➀ 0
➁ 2
➂ 3
➃ 5
解答
④ 5list.index(x, start, end)はxに等しい最初のアイテムのインデックスを返すメソッドになります。 ※endは含まない
メソッドとは
メソッドとはオブジェクトに属している関数のことで、objを何らかのオブジェクト、methodをそのオブジェクトで定義されているメソッドとすると、 obj.methodと書き表されます。
その他のメソッドに関しては
- list.pop(i):指定された位置のアイテムをリストから削除し、このアイテムを返す
- list.clear():リストから全てのアイテムを削除する
- list.count(x):リストのxの個数を返す
- list.append(x):末尾にアイテムを1つ追加する
- list.sort(key=None, reverse=False):リストをソートする
- list.extend(iterable):末尾にイテラブルを追加する
- list.reverse():リストを逆順にする
- list.remove(x):xに等しい最初のアイテムを削除する
- list.copy():リストのコピーを返す
- list.insert(i, x):指定された位置にアイテムを挿入する
となります。
さらに詳しく知りたい方は公式ドキュメントをご確認ください。
問題6(タプル)
次の選択肢のうち、タプルでないのはどれ?
➀ my_tuple = 10, "a", [1, 2]
➁ my_tuple = ()
➂ my_tuple = ("hello")
➃ 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',)
よって答えは③となります。
my_tuple = "hello"
print(type(my_tuple))
<class 'str'>
問題7(オブジェクトの型)
次の選択肢のうち、ミュータブルなオブジェクトはどれ?
➀ int
➁ str
➂ list
➃ tuple
解答
③ listミュータブルは値を変更できるオブジェクトであり、イミュータブルは値を変更できないオブジェクトになります。イミュータブルに関して、別の値を格納したい場合は、新しいオブジェクトを生成する必要があります。
問題8(モジュール)
インタープリタで以下のコードを実行した。
出力結果はどうなる?
print(__name__)
➀ __name__
➁ __main__
➂ __str__
➃ __init__
解答
② __main____name__はモジュール名を出力しますが、トップレベルで実行する場合は__main__を出力します。
モジュールに関して動画で詳しく説明をしています。
よろしければご活用ください。
問題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)
➀ 10
➁ 8
➂ 1
➃ 15
解答
② 8continueは残りの処理をスキップして次のループ処理に移ります。
breakは文を囲うもっとも内側のforまたはwhileのループから抜けます。
よって、num == 2の時は result += num が行われず、
num == 4の時にループを抜けるため、
1+3+4=8
となります。
あわせて読みたい
https://qiita.com/python_academia/items/ce73e7565830123f1c1e
問題10(辞書)
次のコードの出力結果は?
x = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4'}
for i in x:
print(i, end = ",")
➀ key1,key2,key3,key4,
➁ value1,value2,value3,value4,
解答
① key1,key2,key3,key4,辞書をfor文でループ処理するとkeyの値を取得することができます。
valueを取得したい場合は、print(x[i], end = ",")とします。
x = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4'}
for i in x:
print(x[i], end = ",")
value1,value2,value3,value4,
おわりに
Pythonの文法に関する問題を10問出題しました。
Pythonチュートリアル(公式ドキュメント)を使ってPythonの基礎文法を解説しています。
よろしければご活用ください。