文系のIT遊記

「そもそもITって何?」と思っていた28歳♀のIT関係勉強記。

【Pythonエンジニア認定基礎試験】プログラミング超初心者、模試の復習をする③

f:id:bunkei_it:20201030200601j:plain

Pythonエンジニア認定基礎試験模試の復習

 Pythonエンジニア認定基礎試験の模試、DIVE INTO EXAM の復習。

 わからなかった問題の中から、特にこれはアウトプットしておきたい! と思ったものについて書いていく。

clear( )とdel

以下のプログラムと同じ出力結果を得たい。

dive_into_code = ['Noro', 'Nakao', 'Miyaoka', 'Miyashita', 'Shibata', 'Kimura']
dive_into_code.clear()
print(dive_into_code)

下記のプログラムの(A)に記述すべきコードを選択肢から選びなさい。

dive_into_code = ['Noro', 'Nakao', 'Miyaoka', 'Miyashita', 'Shibata', 'Kimura']

(A)

print(dive_into_code)

 正解:del dive_into_code[:]

 

 正解だったけど、自信がなかった問題。

 

 最初のグレーの枠の中では、.clear( ) で dive_into_code のリスト内すべての要素をclear(削除)している。

 

 del文を使って要素をdelete(削除)することもできる。

 del文の場合は、リスト内の要素のどこを消すのか、範囲や位置を指定する必要がある。

 だから [:](リスト内の最初から最後まで)と、範囲を指定して削除する。

 スライシング(範囲を指定)や、インデクシング(要素のインデックスを指定)で範囲を指定するのがdel文。

 

 ちなみに、要素の削除に関するメソッド等がわかりやすくまとめられていた記事はこちら。

note.nkmk.me

 

f:id:bunkei_it:20201106155851j:plain

そういえば、repr( )って何だ。

 模試の復習からは少し話がそれるけれど、前の記事で謎の存在「repr( )」が登場したので、それについても確認しておきたい。

 

 以下の問題にあるreprlibモジュールの中の一つ「reprlib.repr( )」として活躍していた。 

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

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

 正解: "{'c', 'd', 'e', 'i', 'n', 'o', ...}"

 

 でも、repr( ) 単体ではどんな動きをするのか。

 気になったので調べてみた。

 

repr( )

 repr( ) は「あらゆる値を文字列に変換できる」らしい。

 Pythonチュートリアルに書いてあった。

 

 文字列に変換すると言ったらstr( )かと思っていたけど、repr( )でもできる。

 

  • str は「人間が読みやすい表現」
  • repr は「インタープリタが読める表現」

 

 を生成するらしい。

 だから、str と repr では出力のされ方がちょっと違う。 

 

 まずは、strで出力した場合。

 

 'helo world ' がどう出力されるかというと。

 (helloがheloになっちゃってる問題は横に置いて!笑)

 f:id:bunkei_it:20201106105216p:plain

 ’ ’で囲われている範囲の文字列が出力されている。

  は改行を意味するから、改行もしっかりされている。

 

 一方で、同じものをrepr で出力するとどうなるか。

 f:id:bunkei_it:20201106105150p:plain

  ’ ’ と  は両方ともそのまま出力されている。

  これが「インタープリタが読める」ということなのかも。

 

 とはいえ、リストとか辞書とかの多くの値では、str( ) も repr( ) も同じ表現になるらしい。

 上の例は、例外ってことなのかな。

 repr( )は「オブジェクトが何の関数なのかわかるようにフォーマットする」と書いている記事もあった。

 

 その記事の内容の含めて、やっぱり基本は、

  • 人間がわかる str( )
  • インタープリタが理解できる repr( )

 が大きな違いなんだろうなあ。

 

お疲れさまでした!

 要素の削除に関わるclear( ) と del の使い方をマスターした。はず。笑

 前回から気になっていた repr( ) についても少し詳しくなれたかな?

 明日も頑張ろう。