CCC: coding crash course (2) 

内部向け資料。

今日の内容：

- (1)  list に慣れる, append()

- (2) 関数 int(), float()

- (3) 関数range(), list(range())

- (4) for 文

- (5) 復習問題

--- 
# (1) list に慣れる, append()


- `append(A)` は、リスト末尾に要素Aを加える。

```python
# 復習
# 何が出力されるか？
a = [7, 8, 'taro', 'jack']

print(a)

print(a[2])

```


```python
# 何が出力されるか？
a = [7, 8, 'taro', 'jack']

a.append('10')

print(a)

a.append(10)

print(a)

# 10 と '10' は別のもの。

# [7, 8, 'taro', 'jack', '10', 10]
```


- リストの位置指定の裏技: [-1] = マイナス１番目という位置は末尾。
 

```python
# 何が出力されるか？
a = [7, 8, 'taro', 'jack']
print(a)

print(a[3])
print(a[-1])

# 要素数４のとき、住所"[3]"と住所"[-1]"は同じ。

```

- リストにリストを入れることもできる。


```python

# 何が出力されるか？
a = [7, 8, 'taro', 'jack']
b = ['ML', 3.14]
a.append(b)
print(b)

print(a[-1])
print(a[-1][0])
print(a[-1][1])

```


--- 
# (2) 関数 int(), float()


- `int(A)` :   Aを整数に直す。
- `float(A)` : Aを実数に直す。


```python


# 何が出力されるか？

b = '5'
c = int(b)

print(b)
print(c)


d = 5.5
e = int(d)

print(d)
print(e)


f = 1.234
g = float(f)

print(f)
print(g)
```



---
# (3) range(), list(range())


- `int(A)` :   Aを整数に直す。
- `float(A)` : Aを実数に直す。
- `list(A)` : Aをリスト型に直す。

```python

A = range(10)
print(A)

B = list(range(10))
print(B)

C = list(range(1,11))
print(C)

D = list(range(1,11,2))
print(D)

E = list(range(11,1,-2))
print(E)

# [2000,2004,2008,2012,2016,2020] を表示するにはどうすれば良いですか？

# [2020,2016,2012,2008,2004,2000] を表示するにはどうすれば良いですか？
```

なお、Python2, Python3では`print(range(5))`の出力結果が異なる。

```python

# python3
$ print(range(5))
range(0,5)
```

```python
# python2
$ print(range(5))
[0,1,2,3,4]
```


---
# (4) for文 [for loop]

- 繰り返す内容が１行でまとめられるなら

`for [繰り返しに関するルール]:`
\_タブ\_ `[繰り返す内容]`

- 繰り返す内容が２行にわたるなら

`for [繰り返しに関するルール]:`
\_タブ\_ `[繰り返す内容]`
\_タブ\_ `[繰り返す内容]`

このようにタブを使ってブロックを作ります。
これは、見やすいようにする（可読性を増す）ために作られたPythonのルールです。
for loopの中でこれを行わないと、エラーを起こしたり、意図しない結果が生じます。




例えば、
`list_a = ['Tokyo', 'Cambridge', 'Ann Arbor', 'Pittsburgh']`
というリストがあり、これを順番に表示する場合、よく使われるのは、以下の２通りです。

- 「通し番号 `i`」を0-3まで回し、「リストの中の`i`番目の要素」を表示

`for i in range(4):`
\_タブ\_ `print (list_a[i]) `


- 「リストの要素を最初から1個ずつ取り出して、それを表示」

`for a in list_a:`
\_タブ\_ `print (a) `


```python

list_name = ['Taro', 'Jack', 'Tom', 'Andy', 'Jason']

print(list_name)
for x in list_name:
    print(x)

print('---')

for i in range(10):
    print(i)

print('---')
for i in range(2000,2021,4):
    print(i)

print('---')
for i in range(2020,1999,-4):
    print(i)

print('---')

N_people = len(list_name)

for i in range(N_people):
    print(i, list_name[i])


for i in range(0,N_people,2):
    print(i, list_name[i])
    print('--. . . --')
```

---
# (5) 復習問題

```python
# Q. 何が表示されると思いますか？ 
list_name = ['Taro', 'Jack', 'Tom', 'Andy', 'Jason', 'Matt']
list_name.append('John')
list_name.append('Madoka')
list_name.append('Ichiro')
print(list_name)

N_people = len(list_name)
print(N_people)

for i in range(1,N_people,3):
    print(i, list_name[i])



``` 


# (6) if 文

`if (条件A):`
\_タブ\_ `「条件Aを満たす」場合読み込まれる`

`if (条件A):`
\_タブ\_ `「条件Aを満たす」場合読み込まれる`
`else:` # その他
\_タブ\_ `「条件Aを満たさない」場合読み込まれる`


`if (条件A):`
\_タブ\_ `「条件Aを満たす」`
`elif (条件B):` 
\_タブ\_ `「条件Aを満たさない」かつ「条件Bを満たす」`
`else:` # その他
\_タブ\_ `「条件Aを満たさない」かつ「条件Bを満たさない」`



```python

x = 5
if (x>0):
    print('x=', x, '(This is larger than 0.)')

x = -3
if (x>0):
    print('x=', x, '(This is larger than 0.)')
else :
    print('x=', x, '(This is NOT larger than 0.)')


x = -3
if (x>0):
    print('x=', x, '(x>0)')
elif (x>-10) :
    print('x=', x, '(-10 < x < 0)')
else :
    print('x=', x, '(otherwise)')
    

```