Python3のノート


# はじめに

- OS
    - Windows10 Pro 
- Version
    - Python 3.7.3

---

# 更新日時

|更新日|内容|名前|
|:--|:--|:--|
|2020.07.26 Sun|新規作成|Yamada|
|2020.08.02 Sun|f文字列 追加|Yamada|
|2020.08.02 Sun|int関数 追加|Yamada|
|2020.08.02 Sun|float関数 追加|Yamada|
|2020.08.10 Sun|関数・メソッド・組み込み関数 追加|Yamada|
|2020.09.06 Sun|ファイル入出力 追加|Yamada|


--- 

# 参考資料

[Pythonエンジニア育成推進協会監修 Python 3スキルアップ教科書 ](https://www.amazon.co.jp/dp/B07YQ1RM1K/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)

[公式ドキュメント Python 3.7.8](https://docs.python.org/ja/3.7/)

---

# 最初のプログラム

``` python
print('Hello,World')
```
---

# 基本ルール

---

## 変数の宣言
- ハッシュ記号は変数名に利用できない
- ドルマークは変数名に利用できない
- 数字で始まる変数名は宣言できない
- Pythonのキーワードに使われている文字列は変数に利用できない
- 文字列リテラルはシングルクォーテーションを扱う
- 文字列リテラルはダブルクォーテーションを扱う


---

## データ型

- 文字列型
- 数値型
- 組み込み型

``` python
HelloStr = 'Hello,World'
print(HelloStr)
# Hello,World
```

---

## 型変換

- 暗黙的型変換
    - 変数初期化時に代入演算された値に基づいてデータ型を変換すること(一般的な解釈)
    - Pythonでは厳密には型変換ではない
    - 各データ型のインスタンスオブジェクトを生成して名前を付ける感じ

``` python
name = 'Yamada'
print(type(name))
# <class 'str'>

age = 18
print(type(age))
# <class 'int'>
```

---

## 文字のエスケープ


|表示文字|エスケープ文字|
|:---|:--|
|改行|\n|
|タブ|\t|
|"|\"|
|バックスラッシュ|\\\\|

---

## 文字列リテラル

- 複数行にまたがる文字列
    - 3回のシングルクォートで括る
- 複数行にわたるコメント
    - 3回のシングルクォートで括る

使い方

``` python
sentence = '''
これは文章です。
入力したとおりに
改行も認識されます。
'''
print(sentence)

# ここからコメント
'''
出力内容

これは文章です。
入力したとおりに
改行も認識されます。
'''
# ここまでコメント
```
---

## 文字列の連結

- 文字列の連結には「+」を使います。
    - 数値を結合する場合
        - str関数を使って文字列に変換すること

使い方

``` python

age = 999
firstName = 'Yamada'
message = 'Hello ' + firstName + str(age)
print(message)

# Hello Yamada999

```

中間に変数を挟まない方法

``` python
age = 999
firstName = 'Yamada'
greeting = 'Hello '
print(greeting + ' ' + firstName + str(age))

# Hello Yamada999

```

---
## 文字列補間

- 文字列内で変数の中身を展開する方法

``` python

firstName = 'Yamada'
greeting = 'Hello {}'.format(firstName)
message = 'Your name is {} '.format(firstName)

print(message)
print(greeting)

'''
Your name is Yamada
Hello Yamada
'''
```

## f文字列

Python 3.6 から使える機能
文字列内で変数展開が可能

PHPでダブルクォーテーションでくくった変数が
展開されるのと動きは似てる。
ていうか、それっぽい。(PHPer脳)

``` python 
firstName = 'Yamada'
greeting = f'Hello {firstName}'
message = f'Your name is {firstName} '
 
print(message)
print(greeting)

# Your name is Yamada 
# Hello Yamada

```

---
# 組み込み関数
---

## int関数

指定された文字を数値に変換する。
このとき第2引数に進数Nを入れておくと
進数Nに対応する値Xを 10進数に変換する。

基数として指定できる値は 0 か 2 から 36 

``` python

print(int(17.58))
print(int("1011", 2))
print(int("A4", base=16))

# 17
# 11
# 164

```

## float関数

float 関数は引数に指定した数値または文字列を
浮動小数点数に変換して取得する。

``` python

print(float(17.58))
# 17.58

```


## iter関数

文字列やリストなどの順番に並んだデータをイテレータとして返す関数

nextを使うと先頭から順番にデータを取り出します。

``` python

firstName = 'Yamada'
firstName_iter = iter(firstName)

print(next(firstName_iter))
print(next(firstName_iter))
print(next(firstName_iter))
print(next(firstName_iter))
print(next(firstName_iter))
print(next(firstName_iter))

# Y
# a
# m
# a
# d
# a

# 7文字目はないのでStop Iteration
# print(next(firstName_iter))
'''

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
StopIteration

'''
```

---
# 関数・メソッド・組み込み関数

## 関数
> 変数x,yがあって，xの値を定めるとそれに対応したyが
> ただ一つに定まるとき，yはxの関数であるという。

要するに自動販売機
>\110 を投入すると缶コーヒーが出てくる的な話

## メソッド

>メソッドは、クラスにおける動作、処理（手続き）を表す要素です。
> オブジェクト指向における「ふるまい」

関数と同じ関数であるもののメソッドは
あるクラスに属する「メンバ関数」のことを指す

---
# 組み込み関数

 > 組み込み関数とは、プログラミング言語などの仕様に
 あらかじめ用意され、標準で使用できる関数のこと。

ビルトイン関数や標準関数ともいう
言語構造上、用意されている関数のこと

---
# ユーザ定義関数(user-defined function)

組み込み関数に対してプログラマが
コード上で定義・実装した関数を「ユーザー定義関数」という。

自分で作った関数のこと(メソッドではない)


---
# ファイル入出力

ファイルオブジェクトでwriteメソッドを使うと
テキストを書き込めるが
実はprint関数でもテキストを書き込める。


正確には
標準入出力から作成したファイルオブジェクトを
print関数に渡す。


---
# 今後できるようになること

---
# おわり

``` python
print('to be continued !!')
```