Python3の復習(数値・文字列)
こんにちは。
つい最近始めた在宅バイトの作業が予想以上に面倒で困っている、かにたまごです。
今日からPython3の復習をしていきたいと思います。
備忘録的な記事なので読みにくい部分があるかと思いますが、ご了承ください・・・。
今回は
- 数値
- 文字列
について復習していきたいと思います。
数値
- 浮動小数点から整数に変換
小数点以下は全て切り捨てる。
>>>int(56.8) 56
mathライブラリのfloorメソッドと同じ。
>>>import math >>>math.floor(56.8) 56
切り上げはceilメソッド、四捨五入は標準ライブラリのroundメソッドで。
import math #切り上げ >>>math.ceil(56.8) 57 #四捨五入(第二引数に残したい桁数を指定できる) >>>round(99.3) 99 >>>round(99.5) 100
厳密に言うと、roundメソッドの処理は四捨五入ではなくて「偶数への丸め(端数処理=>はすうしょり)」らしい。端数処理って初めて聞いた...。端数が0.5より小さいなら切り捨て、0.5より大きいなら切り上げ、ちょうど0.5なら結果が偶数となる方に丸めるってことらしいです(端数処理 - Wikipediaより)。
#切り上げ >>>round(101.5) 102 #切り捨て >>>round(100.5) 100
第二引数に負の数を指定すると、整数の桁を丸める。
>>>round(765, -1) 760 >>>round(765, -2) 800 >>>round(765, -3) 1000
- ブール値から整数に変換
>>>int(True) 1 >>>int(False) 0
- 文字列から整数に変換
>>>int("5") 5
整数以外の文字列だと、エラーが発生する。
>>>int("5.0") Traceback (most recent call last): File "C:\Users\***\Desktop\Python\Test\basicInfoTest.py", line 1, in <module> ValueError: invalid literal for int() with base 10: '5.0'
文字列
- インデックス参照
>>>string = "Hello" >>>string[0] H
負の値で右端から参照できる。
>>>string[-1]
o
文字列はイミュータブル(変更不可)。
>>>string[0] = "P" Traceback (most recent call last): File "C:\Users\***\Desktop\Python\Test\basicInfoTest.py", line 2, in <module> TypeError: 'str' object does not support item assignment
変更する場合は、replaceメソッドなどを使う必要がある。
>>>string.replace("H", "P") Pello
- スライシング
[始点:終点] で指定できる。(終点-1)まで取得される。
>>>image = "img1.jpg" >>>image[0:4] "img1"
負の値も指定できる。
>>>image[-4:] ".jpg"
[始点:終点:ステップ数] ステップ数で、いくつ飛ばしで取得するかを指定できる。
>>>letters = "bananamanogiyahagi" >>>letters[0:9:2] "bnnmn"
以下の逆順コードは、「全範囲を右端から取得する」という意味?
>>>name = "かにたまご" >>>name[::-1] "ごまたにか"
- 文字列に関する代表的なメソッド
#splitメソッド >>>fruits = "apple, melon, orange, grape" >>>fruits_list = fruits.split(",") >>>fruits_list ["apple", "melon", "orange", "grape"] #joinメソッド >>>string = "/".join(fruits_list) >>>string "apple/melon/orange/grape" #lenメソッド >>>len(string) 24 #upperメソッド >>>big = string.upper() >>>big "APPLE/MELON/ORANGE/GRAPE" #lowerメソッド >>>small = big.upper() >>>small "apple/melon/orange/grape"
感覚的にやっていた部分を理解できた感じはある・・・。
どんな場面で活用できるかとか、あえてエラーを出してみるとか、
他のアプローチで実現できないかとかを考えながら書いていくとより深く理解できるかもしれない。
ともあれ、記事書くの大変。
以上です。