Python チュートリアル(模試不正解箇所)12/18

■正規表現ツールを提供するモジュールを選択肢の中から選びなさい。

正解:re

■理解不足の問題について

・以下のプログラムを実行した際の出力結果として正しいものを選択しなさい。

i = 10

def num(arg=i):
   print(arg)
   
i = 7

num()

正解:10
 - 7が出力されない理由
  →①デフォルト値の評価は、関数を定義した時点で、定義をかいた
      スコープで行われる
      ②デフォルト値の評価は一度しか起きない
 - 7を出力する場合:num(arg=i)

・問題文のプログラムを実行した場合の、出力結果を選びなさい。

class Sample:

 c_list = []

 def add_c_list(self,data):
   self.c_list.append(data)

print("出力結果:", end=" ")
sample1 = Sample()
sample1.add_c_list("データ1")

sample2 = Sample()
sample2.add_c_list("データ2")

for item_data in sample1.c_list:
 print(item_data, end=" ")

正解:出力結果: データ1 データ2
 - sample1, sample2それぞれで独立したデータを保持する場合

class Sample:
 def __init__(self, c_list=None):
   self.c_list = []
 def add_c_list(self, data):
   self.c_list.append(data)

sample1 = Sample()
sample1.add_c_list("データ1")

sample2 = Sample()
sample2.add_c_list("データ2")

print("出力結果1:", end=" ")
for item_data in sample1.c_list:
 print(item_data, end=" ")
print('\n')

print("出力結果2:", end=" ")
for item_data in sample2.c_list:
 print(item_data, end=" ")
print('\n')

  →出力結果

出力結果1: データ1 

出力結果2: データ2 

※__init__でオーバーライドしている部分が自分自身でもよくわかっていない
 エラーと格闘しながら、最終的に上記のコードに落ち着いた感じ
(どなたかわかる方、もっと効率の良いコードがわかる方がいらっしゃいましたら、教えていただきたいです)

・Pythonインタープリタにて以下のように入力した場合の出力結果として正しいものを選びなさい。

>>>import reprlib
>>>reprlib.repr(set('diveintocode'))

正解:"{'c', 'd', 'e', 'i', 'n', 'o', ...}"
 - reprlib.repr():出力の長さを制限する
  →出力するながさはmaxlist関数で指定可能(デフォルトは6?)
 - set():文字列はユニークになる。
※アルファベット順に並んでるのはなぜ???


この記事が気に入ったらサポートをしてみませんか?