【tech】Python 3 エンジニア認定基礎試験を受けてみて(受験記)




Python3に基礎試験を受けてきました。
結果は不合格!!泣
675点。。あと一問でした。・・

来週リベンジします。
初めて見る関数、オプションもあり、まだまだ勉強不足だなと思いました。

9/23 合格しました!!イエイッ!

この記事は最初の受験時に、足りなかったと思ったところのメモです
https://docs.python.org/ja/3/tutorial/appetite.html
より参照



2.2.1. ソースコードの文字コード

デフォルトでは、Python のソースコードは UTF-8 でエンコードされているものとして扱われます。

3.1.2. 文字列型 (string)

>>> word = 'Python'
>>> word[0]
'P'
>>> word[5]
'n'

3.1.2. 文字列型 (string)

引用符は、\ でエスケープできます。

Python の文字列は変更できません -- つまり 不変 です。従って、文字列のインデックスで指定したある場所に代入を行うとエラーが発生します:

組込み関数 len() は文字列の長さ (length) を返します:

3.2. プログラミングへの第一歩

>>> i = 256*256
>>> print('The value of i is', i)
The value of i is 65536

キーワード引数 end を使うと、出力の末尾に改行文字を出力しないようにしたり、別の文字列を末尾に出力したりできます:



for文中の制御系のお話

4.4. break 文と continue 文とループの else 節
https://docs.python.org/ja/3/tutorial/controlflow.html


>>> for num in range(2, 10):
... if num % 2 == 0:
... print("Found an even number", num)
... continue
... print("Found a number", num)

forの話とlenの事

4.2. for 文


>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
... print(i, a[i])
...
0 Mary
1 had
2 a
3 little
4 lamb

range

range(0, 10, 3)
0, 3, 6, 9

range(10)は0-9であり、「10」は含まれない。
range(1,10)の時も同じく、「10」は含まれない

pass文

passはどういうときに使われるか

ラムダ式(名前のない小さな関数を生成できます。)

ラムダとは

>>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
>>> pairs.sort(key=lambda pair: pair[1])
>>> pairs
[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

inの使い方

def ask_ok(prompt, retries=4, reminder='Please try again!'):
while True:
ok = input(prompt)
if ok in ('y', 'ye', 'yes'):
return True
if ok in ('n', 'no', 'nop', 'nope'):
return False
retries = retries - 1
if retries < 0:
raise ValueError('invalid user response')
print(reminder)

4.7.6. ドキュメンテーション文字列

>>> def my_function():
... """Do nothing, but document it.
...
... No, really, it doesn't do anything.
... """
... pass
...
>>> print(my_function.__doc__)
Do nothing, but document it.

No, really, it doesn't do anything.

4.8. 間奏曲: コーディングスタイル

Python には、ほとんどのプロジェクトが守っているスタイルガイドとして PEP 8 があります。
インデントには空白 4 つを使い、タブは使わないこと。
可能なら、コメントは行に独立で書くこと。
docstring を使うこと。
演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には空白を入れないこと

あなたのコードを世界中で使ってもらうつもりなら、風変りなエンコーディングは使わないこと。どんな場合でも、Python のデフォルト UTF-8 またはプレーン ASCII が最も上手くいきます。



5.1. リスト型についてもう少し

list.pop([i])
リスト中の指定された位置にある要素をリストから削除して、その要素を返します。インデクスが指定されなければ、 a.pop() はリストの末尾の要素を削除して返します。

list.count(x)
リストでの x の出現回数を返します。

list.copy()
リストの浅い (shallow) コピーを返します。a[:] と等価です。

タプルとは
集合型
辞書型

>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}
>>> list(tel)
['jack', 'guido', 'irv']
>>> sorted(tel)
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False

5.1.3. リストの内包表記

vec = [[1,2,3], [4,5,6], [7,8,9]]
[num for elem in vec for num in elem]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

5.2. del

>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]

5.5. 辞書型 (dictionary)

辞書は キー(key): 値(value) のペアの集合であり、キーが (辞書の中で)一意でければならない、と考えるとよいでしょう。波括弧 (brace) のペア: {} は空の辞書を生成します。

すでに使われているキーを使って値を記憶すると、以前そのキーに関連づけられていた値は忘れ去られてしまいます

5.6. ループのテクニック

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
... print(k, v)
...
gallahad the pure
robin the brave

6.1.2. モジュール検索パス

spam という名前のモジュールをインポートするとき、インタープリターはまずその名前のビルトインモジュールを探します。見つからなかった場合は、 spam.py という名前のファイルを sys.path にあるディレクトリのリストから探します。 sys.path は以下の場所に初期化されます:

入力されたスクリプトのあるディレクトリ (あるいはファイルが指定されなかったときはカレントディレクトリ)。

PYTHONPATH (ディレクトリ名のリスト。シェル変数の PATH と同じ構文)。

インストールごとのデフォルト。

6.3. dir() 関数

dir関数で得られる情報とは

6.4. パッケージ

パッケージを import する際、 Python は sys.path 上のディレクトリを検索して、トップレベルのパッケージの入ったサブディレクトリを探します。

urllib.request
statistics.mean(data)

シーケンス型またはイテレータになり得る data の標本算術平均を返します。

算術平均はデータの総和をデータ数で除したものです。単に「平均」と呼ばれることも多いですが、数学における平均の一種に過ぎません。データの中心位置の測度の一つです。



7.1.3. 文字列の手作業でのフォーマット

zfill

7.2.2. json による構造化されたデータの保存

この標準モジュール json は、Python のデータ 階層を取り、文字列表現に変換します。この処理は シリアライズ (serializing) と呼ばれます。

>>> import json
>>> json.dumps([1, 'simple', 'list'])
'[1, "simple", "list"]'

dumps() に似た関数に、dump() があり、こちらは単純にオブジェクトを text file にシリアライズします。f が書き込み用に開かれた text file だとすると、次のように書くことができます:

json.dump(x, f)

逆にデシリアライズするには、f が読み込み用に開かれた text file だとすると、次のようになります:

x = json.load(f)

8.2. 例外

>>> 10 * (1/0)
Traceback (most recent call last):
File "", line 1, in

ZeroDivisionError: division by zero

>>> 4 + spam*3

Traceback (most recent call last):

File "", line 1, in

NameError: name 'spam' is not defined

>>> '2' + 2

Traceback (most recent call last):

File "", line 1, in

TypeError: Can't convert 'int' object to str implicitly

8.4. 例外を送出する

>>> try:
... raise NameError('HiThere')
... except NameError:
... print('An exception flew by!')
... raise
...
An exception flew by!
Traceback (most recent call last):
File "", line 2, in

NameError: HiThere

9.3.5. クラスとインスタンス変数

class Dog:

def init(self, name):
self.name = name
self.tricks = []

def add_trick(self, trick):
self.tricks.append(trick)

>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.add_trick('roll over')
>>> e.add_trick('play dead')
>>> d.tricks
['roll over']
>>> e.tricks
['play dead']

10.1. OSへのインタフェース

>>> import os
>>> os.getcwd()
'C:\Python37'

10.5. 文字列のパターンマッチング

>>> import re
>>> re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
['foot', 'fell', 'fastest']
>>> re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
'cat in the hat'

10.6. 数学
random モジュールは、乱数に基づいた要素選択のためのツールを提供しています:

>>> import random
>>> random.random()
0.17970987693706186
>>> random.randrange(6)
4


statistics モジュールは数値データの基礎的な統計的特性(平均、中央値、分散等)を計算します:

>>> import statistics
>>> data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5]
>>> statistics.mean(data)
1.6071428571428572

10.7. インターネットへのアクセス

>>> from urllib.request import urlopen
>>> with urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl') as response:
... for line in response:
... line = line.decode('utf-8')
... if 'EST' in line or 'EDT' in line:
... print(line)

10.8. 日付と時刻¶

>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2003, 12, 2)

11.5. ログ記録

import logging
logging.debug('Debugging information')
logging.info('Informational message')
logging.warning('Warning:config file %s not found', 'server.conf')
logging.error('Error occurred')
logging.critical('Critical error -- shutting down')

11.8. 10 進浮動小数演算

>>> from decimal import *
>>> round(Decimal('0.70') * Decimal('1.05'), 2)
Decimal('0.74')
>>> round(.70 * 1.05, 2)
0.73

12.3. pip を使ったパッケージ管理

pip list は仮想環境にインストールされた全てのパッケージを表示します
pip freeze はインストールされたパッケージ一覧を、pip install が解釈するフォーマットで生成します。一般的な慣習として、このリストを requirements.txt というファイルに保存します

パッケージ名を指定してそのパッケージの最新版をインストールすることができます:
$ pip install novas

パッケージ名のあとに == とバージョン番号を付けることで、特定のバージョンのパッケージをインストールすることもできます:
$ pip install requests==2.6.0

同じコマンドを再び実行した場合、pip は要求されたバージョンがインストール済みだと表示して何もしません。別のバージョン番号を指定すればそのバージョンをインストールしますし、pip install --upgrade を実行すればそのパッケージを最新版に更新します:
pip install --upgrade requests


私がメインで使っているWindowsPC(のメモリが8GBの物)です!
私はこのPCのメモリを現在では32GBにアップグレードして使っています!笑

下のpythonでexcelを操作する本は kindle unlimitedで無料で読めますのでお勧めです!(30日無料期間に読んで解約もアリだと思います。笑)
一度読んでみると、別に困ってなかったけど、もっと便利な使い方があったことに気づけたりしていいですよね!

オライリー本を買う方がもったいなさ根性で本を読めていいのかもしれませんが、オフィシャルのドキュメントで間に合うなら、やっぱりドキュメント見ちゃいますよね笑