Python 認定試験ふりかえり

Python検定 合格できた~!

Python 3 エンジニア認定基礎試験を受けてきました スコアは850点(満点:1000点)でした
思い出せる限り、間違えた・解答するのに悩んだ問題をふりかえります

間違えた問題

リスト操作

リストの値を表示する

list = [1, 2, 3]  
# 以下の2つがリストの値を表示する  
list[:]  
list.copy()  

list.count()を選んでしまいました(list.count(1)で値を検索する関数)

random()関数

import random  
random.random() # 0.0から1.0未満の小数が表示される  

整数が表示されると勘違いしていた

dictionary

  • key:valueなので重複したkeyは持てない
  • keyの型はそろえなくてもOK(dic = {1:'one', '2':'two'}もちゃんとdictで扱える)
  • タプル(key , value)からdictにすることができる(タプルは(key : value)じゃないので注意)

関数の外にあるコード

コードは上から実行されていくので、関数の外にあるコードも普通に実行される

def test1():  
    print('test1')  

print('test2')  

if __name__ == '__main__':  
    test1()  
# コマンドから「python ファイル名」で実行  
# test2  
# test1 と表示される  

if __name__ == '__main__':があると、そのブロック内しか実行しないと勘違いしていた

jsonシリアライズ

dump、dumpsなどsがつく・つかないで処理の違いが覚えられていなかった

  • シリアライズ(dictオブジェクト → json形式の文字列)
    • Pythonだとjson形式{key:value}はdict扱いになるのでStringにする
    • json.dumps()でStringにする
    • json.dump()でファイルに書き込む
  • デシリアライズ(json形式の文字列 → dictオブジェクト)
    • json.load()でjsonファイルを読み込んでdictにする
    • json.loads()はjson形式の文字列をdictにする

悩んだ問題

整数型

Python3ではlongはintに統合されたので、整数はすべてint型になった

set

setは重複した値を持たず、順番も持たない

value = {'A', 'B', 'A', 'C'}  
value  
# {'A', 'B', 'C'}が表示される  

{ }があるとdictなのかsetなのか悩んでしまった

実行中のOSを調べる

osモジュールのos.nameでWindowsかLinuxか分かる(Windows:'nt'、Linux:'posix')
os.versionはないので注意

例外raise

try:  
    raise TypeError('例外が発生しました')  
except TypeError:  
    raise  
    # TypeError:例外が発生しました が表示される  

tryブロックで例外msgをセットしているので、exceptブロックでraiseしてもmsgは引き継がれる

ZeroDivisionError

x = 10 / 0 # ZeroDivisionError発生  
y = 0 / 10 # y=0.0  

0で割るとZeroDivisionErrorになる(0を割るのはエラーにならない)