LoginSignup
10
12

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

Last updated at Posted at 2023-06-18

Pythonの文法に関する問題を10問出題します。

問題の選出方法はTwitterにて定期的に出題している問題で、正答率があまり良くなかった範囲から選出しました。

ご参考になれば幸いです。

Twitterでの出題例

問題1(計算問題)

次のコードの出力結果は?

a = 13
b = 5
c = a // b
print(c)
選択肢
➀ 2.6
➁ 3
➂ 8
➃ 2
解答 ④ 2

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

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

① 2.6 は a / b
② 3 は a % b
③ 8 は a - b

となります。

割り算は常にfloat型になることに注意しましょう。

In
print(20/5)
Out
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を評価し、値を返す。

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

In
print(bool("a"))
print(bool(""))
print(bool(1))
Out
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 となります。

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

In
def g(arg=j):
    j = 2
    j = 3
    print(arg)
j = 4
g()
Out
---------------------------------------------------------------------------
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
解答 ④ 5

list.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):指定された位置にアイテムを挿入する

となります。

さらに詳しく知りたい方は公式ドキュメントをご確認ください。

https://docs.python.org/ja/3.9/tutorial/datastructures.html

問題6(タプル)

次の選択肢のうち、タプルでないのはどれ?

選択肢
➀ my_tuple = 10, "a", [1, 2]
➁ my_tuple = ()
➂ my_tuple = ("hello")
➃ my_tuple = (1, 2, 3)
解答 ③ 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',)

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

In
my_tuple = "hello"
print(type(my_tuple))
Out
<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
解答 ② 8

continueは残りの処理をスキップして次のループ処理に移ります。
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 = ",")とします。

In
x = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4'}
for i in x:
    print(x[i], end = ",")
Out
value1,value2,value3,value4,

おわりに

Pythonの文法に関する問題を10問出題しました。

Pythonチュートリアル(公式ドキュメント)を使ってPythonの基礎文法を解説しています。
よろしければご活用ください。

出典

公式ドキュメント https://docs.python.org/ja/3.9/tutorial/

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12