Pythonのよく使う基礎文法覚書（書き途中）

# Pythonのよく使う基礎文法

## キーボード入力
input()で行なう
この時入力された値は**str型**で処理される．

```py

x = input()
```

#### 文字列を分割してリスト化する
スペースなどで区切られた文字列を分割してリストに格納するにはsplit関数を使う．
split関数の引数を空白にした場合は以下のものを分割してくれる．

- 空白
- 改行\n
- タブ\t
- 垂直タブ\v
- 復帰\r
- 改ページ\f

```py
x = 'one two three'
x = x.split()
>>> ['one', 'two', 'three']
```

任意の文字で区切りたい場合は以下のように書く．

```py
x = 'one,two,three'
x = x.split(',')
>>> ['one', 'two', 'three']
```

参照：https://www.headboost.jp/python-how-to-split-strings/

#### 文字列のリストをint型に変換する

文字列のリストをまとめて変換するにはリスト内包表記を使うと便利．


```py
x = ['0', '1', '-2', '300']
num = [int(n) for n in x]
print(x)

>>>[0, 1, -2, 300]
```


## 改行
\nで行う

```py

print("Hello\nHello")
```
で入力を行うと

```
Hello
Hello
```
と出力される．

## printの中に文字列と一緒に変数を表示する
.format()関数を使う．
.format()内の順番通りに{}に入る．

```py

print('{}と{}'.format('a', 'b'))
>>> aとb
```

## 配列
Pythonの配列の種類は4種類ある．
- リスト　大量のデータに番号をつけて管理．追加削除も可能．
- タプル　大量のデータを番号で管理．追加削除はできない．
- 辞書　キー（key）と値（value）の組み合わせでデータを管理．
- 集合　データの重複を許さないデータ構造．
### 配列の宣言方法

```py

x = []
```

要素を全て任意の値で埋めたい場合は*を使う．
例えば10個の要素のみが欲しい場合

```py
x = [0] * 10
print(l)
>>> [0,0,0,0,0,0,0,0,0,0]
```

リストに要素を追加するには

```
x.append(追加したい数，文字)
```

空のリストを宣言するには

```py
x = [None]*10
```
### 辞書型の宣言方法
```py
mydict = {}
```
辞書型の要素の値を変更
```py
mydict = {1:"Movie", 2:"Foods", 3:"Reading"}
mydict[2] = "Sports"
print(mydict)
>>> {1: 'Movie', 2: 'Sports', 3: 'Reading'}
```
辞書型に要素を追加するには
```py
mydict = {1:"Movie", 2:"Foods", 3:"Reading"}
mydict[4] = "Sports"
print(mydict)
>>> {1: 'Movie', 2: 'Foods', 3: 'Reading', 4: 'Sports'}
```
## データ型の種類と宣言方法

|名称|概要|例|
|:--|:--:|:--:|
|int|整数|1,-3,0|
|float|小数点のついた数|1.12,-3.05,4.0|
|str|文字列|"Hello",'Hello'|
|bool|ブール値（真偽値）|True False|

### str型

「'」，「"」で囲まれているものは文字列になる．

```py

print(3*"Hello")
```

と入力すると

```py

>>> HelloHelloHello
```
と出力される．
## 四則演算

|演算|意味|計算結果|
|:--|:--:|:--:|
|5 + 2|足し算|7|
|5 - 2|引き算|3|
|5 * 2|掛け算|10|
|5 / 2|割り算（小数点以下も出る）|2.5|
|5 // 2|割り算（小数点以下切り捨て）|2|
|5 % 3|余りの算出|2|

## データ型の変更

strをintに変える

```py

int("strの数字")
```

数字をstrに変える

```py

str(数字)
```

### リストの型変換

```py

ls = [int(i) for i in ls] 
```

## 論理演算
if文の条件式等で使う論理演算は以下のように使い，組み合わせる際はーーのように使う．

```py

if a == b and a == c:
   print("Hello")
```

##for文



```py
for i in range(5):
　　　print(i)
```
range関数を使うことが多いがここはイテラブルオブジェクトという名前でここに座標などのリストを入れるとiに座標が入る
例

```py
points = [[-0.25, 0.00, -3.75], [0.25, 0.00, -3.75], [0.25, 0.50, -3.75], [-0.25, 0.50, -3.75]]
for p in points:
    print(p)

>>> [[-0.25, 0.00, -3.75]
[0.25, 0.00, -3.75]
[0.25, 0.50, -3.75]
[-0.25, 0.50, -3.75]]
```

##while文
## 文字列比較のための条件式

文字列で使える代表的な条件式

|記号|意味|使用例|
|:--|:--:|:--:|
|<|辞書的に前にある|s < "Hello"|
|<=|辞書的に以前にある|s <= "Hello"|
|>|辞書的に後にある|s > "Hello"|
|>=|辞書的に以後にある|s >= "Hello"|
|==|等しい|s == "Hello"|
|!=|等しくない|s != "Hello"|
|in|文字列の中にもう一方の文字列が含まれているか|"abc" in s|
|not in|文字列の中にもう一方の文字列が含まれていないか|"abc" not in s|
|startwith()|前方一致．()内の単語で始まるかどうか|s.startwith("abc")|
|endwith()|後方一致．()内の単語で終わるかどうか|s.endwith()|
## for文のイテラブルオブジェクト
変数を回数にしたいときはrange(変数)の形にすると使える

## Pythonの文字フォーマット（桁数を揃えたりする方法）
例えば時間の表示を揃えたくて0:1を00:01と表示したい時は

```py

hour = 0
minute = 1
print('{:02}:{:02}'.format(hour, minute))
>>> 00:01
```
となる．
他にも小数点以下を出したい時などは画像の通りに書式を設定する．
![スクリーンショット 2021-01-25 22.04.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666103/8272d810-2686-0b7f-671c-0a4c565a77aa.png)

このサイトがわかりやすい
https://gammasoft.jp/blog/python-string-format/
## 関数外に変数の値を引き渡す方法
1. グローバル化
2. 忘れた

# 競プロでよく使う表記
### 数字の各桁の和など

```py
a = 11
A = sum(map(int, str(a)))
print(A)

>>> 2
```
int型の数字をstrに変更し，map関数でバラしてまたint型に戻し足す

### 複数行に跨った入力
1
2
3
など複数行の入力を一行で処理する（リスト内包表記の利用）

```py
a, b, c = [int(input()) for i in range(3)]

```
これで一行で入力の処理が行える