Python

Python Tips

比較演算子

a== b a と b が同じ
a != b a と b が同じじゃない
a > ba は b より大きい
a < ba は b より小さい
a >= ba は b 以上
a <= ba は b 以下

割り算で答えを整数にする。

>>> 50//24
2
普通に割り算すると
>>> 50/24
2.0833333333333335

if文のサンプル

>>> N = int(input())   標準入力より代入
9
>>> if 1 <= N <= 9:
...   print("10より小さい")
... elif 10 <= N <= 99:
...   print("100より小さい")
... else:
...   print("100以上")
...
10より小さい
>>>

文字の分割

split()により、空白で文字列を分割する。

>>> A="abc def"
>>> A.split()
['abc', 'def']
>>>

分割する文字を指定できる。

split(".")のようにカッコ内に分割させる文字を入れる。

>>> A="ringo.grira.rappa"
>>> A.split(".")
['ringo', 'grira', 'rappa']
>>>

配列を複数の変数に一気に代入

>>> a,b,c=["aaa","bbb","ccc"]
>>> a
'aaa'
>>> b
'bbb'
>>> c
'ccc'
>>>

文字列に変数を埋め込む

f' 文字列{変数}' 

文字列の中で{変数}と指定すると、変数を展開できる。

>>> a,b=["abc","cdf"]
>>> a
>>> a="山田"
>>> b="太郎"
>>> M=f'私の名前は{a} {b}です。'
>>> print(M)
私の名前は山田 太郎です。
>>>

文字列から指定した場所の抜き出し(スライス)

最初の文字を0として、配列の要素として指定できる。

>>> s="megane"
>>> s[0]
'm'
>>> s[1:2] ※2まで(2は含まれない)
'e'
>>> s[1:3]
'eg'
>>>

数字の文字列を数値にする

>>> m="1111"
>>> m
'1111'
>>> int(m)
1111
>>>

逆に数字を文字列にできる

>>> s=2222
>>> s
2222
>>> str(s)
'2222'
>>>

要素すべてに対して、関数の処理を纏めて行う

map関数を使う。

たとえば、文字列のリスト["2","3","4"]の要素すべてを
数値に直したい場合、

>>> list(map(int,["2","3","4"]))
[2, 3, 4]
>>>

とすると
リストの要素がすべて数値になる(すべての要素にint関数を実行している)

lambda を使えば、関数を作って、その関数を要素すべてに実行できる

※要素を2倍にする。
>>> c=[0, 1, 2, 3, 4]
>>> d=map(lambda x: x*2,c)
>>> list(d)
[0, 2, 4, 6, 8]

文字列の文字数を数える

>>> len("abcdefgh")
8
>>>

文字列の中の特定の文字の数を数える

>>> a="aaabbbbccccc"
>>> a.count("a")
3
>>> a.count("b")
4
>>> a.count("c")
5
>>>

数字の桁数を決める。

少数点5桁まで表示させる。
>>> c=10/3
>>> "{:.5f}".format(c)
'3.33333'

円周率(π)を使う

>>> import math
>>> math.pi
3.141592653589793

2次元リストの作成

要素が全て0の3行、4列のリストを作る

>>> list = [[0 for i in range(4)] for j in range(3)]
>>> print(list)
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

トランプのリストを作ってみる。

>>> tbl = [[f'{j} {i+1}' for i in range(13)] for j in ["スペード","ハート","クローバ","ダイヤ"]]
>>> print(tbl)
[['スペード 1', 'スペード 2', 'スペード 3', 'スペード 4', 'スペード 5', 'スペード 6', 'スペード 7', 'スペード 8', 'スペ ード 9', 'スペード 10', 'スペード 11', 'スペード 12', 'スペード 13'], ['ハート 1', 'ハート 2', 'ハート 3', 'ハート 4', 'ハート 5', 'ハート 6', 'ハート 7', 'ハート 8', 'ハート 9', 'ハート 10', 'ハート 11', 'ハート 12', 'ハート 13'], ['クローバ 1', 'クローバ 2', 'クローバ 3', 'クローバ 4', 'クローバ 5', 'クローバ 6', 'クローバ 7', 'クローバ 8', 'クローバ 9', 'クローバ 10', 'クローバ 11', 'クローバ 12', 'クローバ 13'], ['ダイヤ 1', 'ダイヤ 2', 'ダイヤ 3', 'ダイヤ 4', 'ダイヤ 5', 'ダイヤ 6', 'ダイヤ 7', 'ダイヤ 8', 'ダイヤ 9', 'ダイヤ 10', 'ダイヤ 11', 'ダイヤ 12', 'ダイヤ 13']]
>>>

与えられた標準入力の最後までinputする方法

以下の標準入力があり、何個かわからない場合、以下のようにして、入力がなくなれば(EOFErrorが出れば)、inputを止めることができる。

while True:
    try:
        a = input()
        print(a)
    except EOFError:
        break
標準入力
a
b
c
出力
a
b
c

もし、以下のように、入力がないのにinputした場合、エラーが出る。

for i in range(5):
  a=input()
  print(a)
■エラー
※入力は、a,b,cの3つしかないので、for分の4回目でエラーが出る
Traceback (most recent call last):
  File "./Main.py", line 2, in <module>
    a=input()
EOFError: EOF when reading a line

文字列から文字を抜き出す

最初から3文字目までを抜き出す
>>> "abcdefg"[0:3]
'abc'
>>>

3文字目から5文字目までを抜き出す
>>> "abcdefg"[2:5]
'cde'
>>>

3文字目から最後までを抜き出す
>>> "abcdefg"[2:]
'cdefg'
>>>

最初から4文字抜き出す。
>>> "abcdefg"[:4]
'abcd'
>>>

文字列を逆にする。

abcdを逆順のdcbaにする。

>>> "".join(reversed('abcd'))
'dcba'

文字の置換

abcのbをzに置換する

>>> "abc".replace('b','z')
'azc'

-Python