【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日無料期間に読んで解約もアリだと思います。笑)
一度読んでみると、別に困ってなかったけど、もっと便利な使い方があったことに気づけたりしていいですよね!

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

【tech】IoTシステム技術検定中級編に合格できました!受験記、対策や勉強法など




投稿:2018/12/6
更新:2019/12/9

Python基礎検定試験合格しました!その記事も書いたのでよかったら見てみて下さい!

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

今年(2018年)7月7日の「第4回IoTシステム技術検定 中級」試験を受けて、なんと一発で合格出来たのでその受験記と勉強法などを記載しておきます!

この試験は過去問も公開されていませんし、難易度や合格率も公開されていません。
問題集も発売されていないので、情報がまだネットにしかなく大変だったので、今後受ける予定の方たちのお役に立てると嬉しいです!!

始まりは、会社の先輩からおすすめされたのがきっかけでこれから絶対来るから抑えとけ!!みたいな感じで、さっぱりわからなかったのですが、流行りのラズパイ(Raspberry Pi3)とかその辺の事も書いてあると聞いて何が何だかわからずに、信用している大先輩のお勧めという事で受験してみました。

結果ですが、何故か(笑)合格できました。


勉強期間は約3か月程度です。IoTの事などなにも知りませんでしたが、知らない分野だからこそまたそこが面白く、勉強もはかどりました。
というか、先輩も言っていたのですが、始まったばっかりの試験なので、、おそらくですが、ハードルがかなり低いみたいですね。実際のところ。

先輩も私のひとつ前の試験で合格していまして、「あんまりよくわからなかったけど合格した。」って言ってました。だから、「3か月も本をしっかり読んでおけば合格できるからとにかく、つべこべ言わずに受験しろっ!」とも。笑

わたしが受験した2018年の7月の時はIoT技術テキストの初版でした、
わたしが受験後にできてなかったかな~と感じた部分などを振り返ったので、これから受験する人や、IoTを学びたい人の為にも抑えておいた方がいいと思うポイントを書き残しておきたいと思います!


P.16 機能的構成の領域部分
P.20 IoTデバイスの型
P.21 IoTデバイスの基本構成
P.26 通信可能な距離による分類
P.27 免許不要な無線局
P.29 サービスゲートウェイ
P.30 プロトコル変換
P.42 データ収集の方式
P.46 双方向通信・ウェイクアップ方式
P.53 免許不要の無線局(技適の有無)
P.54 主な免許不要の無線局概要
P.63 衝突回避・隠れ端末問題・晒し端末問題
P.67 トランスファージェット
P.80 NBIoT
P.86 WebSocket
P.97 データサイズ(バイト)x8÷データ伝送時間(秒)
P.103 データサイズが少量の場合
P.112 光センサ
P.114 遠赤外線
P.116 ひずみセンサ
P.117 圧力センサ
P.118 加速度センサ
P.120 GPSによる測位
P.121 超音波センサ
P.122 磁気センサ



P.133 代表的なセンサの構成例
P.138 消費電力削減の為
P.138 エナジーはーべスティングデバイスの種類
P.139 画像センサの原理
P.144 MEMSの製造方法による分類
P.145 MEMSの機能による分類
P.149 データフォーマット、プロトコルを合わせる必要がある
P.150 クラウドサービスの形態とサービス
P.151 PaaS型サービス、SaaS型サービス
P.158 主成分分析
P.159 クラスター分析
P.160 機械学習
P.161 教師あり学習
P.162 教師なし学習
P.163 強化学習
P.164 深層学習
P.169 過学習
P.171 HDFS、MapReduce
P.174 リアルタイムを活かした価値の創出、CEP
P.175 すべてメモリ上で処理、一定時間経過したデータは
P.176 NoSQL


P.200 プロトタイピング開発
P.204 データフォーマットの検討
P.221 LED発光ダイオード
P.225 ワイヤレス通信制御プログラミングの事例、プルアップ・ATコマンド・UART
P.234 デバイスサイドの主な開発環境と開発言語
P.235 サーバ(クラウドサービス)サイドの主な開発環境と開発言語
P.247 セーフティとセキュリティ
P.248 情報セキュリティの要件
P.250 リスク低減の例
P.256 パスワード認証
P.257 ICチップ認証・生体認証
P.259 デジタル署名による改ざん検知
P.261 耐タンパー性、セキュアブート、ファイアウォール
P.262 侵入検知システム、侵入防御システム
P.265 情報セキュリティマネジメントシステム
P.267 ISMS認証を取得するメリット・ISO/IEC・JIPDEC・産業用オートメーション
P.269 サイバーセキュリティ基本法
P.275 IoTの保守・運用のリスク(1)~(5)
P.278 サブスクリプション
P.279 レベニューシェア・フリーミアム
P.280 匿名加工情報とは


以上です!
資格取得は丸覚えではなく理解する事が大事とよく言われますが、要点や考え方を覚えるのは本当に大事だと思うので、よくテキストを読んで、知識を身に着けて頑張ってください!

わたしもたまたまマークシートが当たって合格してしまったばっかりに、それ以来一切テキストに目を通していないので、結局、本当に知識を身に着けたいなら、試験に合格する前が勝負だと思いますので、頑張ってください!

楽天トラベル

久しぶりにみてみると、モバイルバッテリーずいぶん安くなってるんですね!

皆さん既にやってると思いますが、 AmazonPrimeだとAmazon Music Unlimitedが月額780円でできるんですね!
最近知ってapple musicから乗り換えました。(200円ですが安い方がいいに越したことはないです笑)