変数の型と演算子

代数演算子

まず、Jupyter labのCodeセルに 12 + 34(任意の数字で構いません)を入力して実行(WindowsはShift+Enter、MACはShift+Return)してみましょう。

12 + 34

46

SyntaxErrorが出たら

すると答えがセルの下側に表示されます。この様な演算を代数演算といい、+ を代数演算子と言います。+ 以外にも以下のものがありますので、数字や代数演算子を変えてみて確認してみて下さい。

代数演算子結果優先度(ABCの順)
a + b和(足し算)C
a – b差(引き算)C
a * b積(掛け算)B
a / b商(割り算)B
a % b割り算の余りB
a // b割り算の商B
a ** baのb乗A
表1 代数演算子

a / b は小数点以下まで計算する割り算、a // b と a % b はそれぞれ商と余りを求める割り算です。
また、計算式は以下の様に連続して記載することができます。計算の優先順は最初が丸括弧()で、次に上表のABCの順となります。

1230 + 3*(51 + 33) - (37/12)**3

1452.6869212962963

変数

変数とは

次に a を入力して実行してみましょう。

a

するとNameErrorが発生します。これは a という変数は定義されていない、つまり定義してから使用することという意味です。
そこで a を変数と定義するために、 = を使って数字を代入して、再度 a を実行してみます。

a = 23
a

23

するとエラーは発生せず、 a に代入した 23 が出力されます。一行目の a = 23 で a に 23 を代入したことにより、 a は変数と定義されました。この様に変数とは = を使って何かを代入することで定義されるものです。この = を代入演算子と呼びます。
変数とは容器の様なもので、ここでは a という変数名の容器に 23 と言う数が入っていると理解することができます。

変数名は1文字とは限りません。変数名の付け方のルールはこちら

そして以下の様に、変数同士で演算をすることができます。

english_score = 35
math_score = 45
average_score = (english_score + math_score)/2
average_score

40.0

また、カンマ(,)で区切ることにより複数の変数を同時に代入することができます。
ちなみに以下の様にボックスの一番下の行に、出力したいものをカンマで区切って並べると、括弧で括られて同じ順番に出力されます。

a1, a2, a3 = 10, 20, 30
a1, a2, a3

(10, 20, 30)

上記の代入方法は以下と同等です。

a1 = 10
a2 = 20
a3 = 30
a1, a2, a3

(10, 20, 30)

練習問題_1_1 bmi を計算する

hight に身長(cm)、weight に体重(kg)をの適当な値を代入してください。 bmi = 体重(kg) / 身長(m)**2 を計算して最後に bmi の値を出力して下さい。

解答例はこちら

練習問題_1_2 整数から数字を取り出す

n に1000以上の比較的大きな整数を代入してください。 n の一の位の数字を n_1、十の位の数字を n_2、右から m 番目の数字を n_m とします。

  1. n_1 を n で表して n_1 の値を出力して下さい。
  2. n_2 を n で表して n_2 の値を出力して下さい。
  3. n_m を n と m で表して 任意の m に対して n_m の値を出力して下さい。

ヒントはこちら
解答例はこちら

累算代入演算子

また以下の様な演算と代入を同時に行う累積代入演算子も定義されています。

累積代数演算子意味
a += ba = a + b
a -= ba = a – b
a *= ba = a * b
a /= ba = a / b
a %= ba = a % b
a //= ba = a // b
a **= ba = a ** b
表2 累積代数演算子

例えば、a += 1 は a に1を加えたものを再度 a に代入するという意味になります。
a = a +1 と書いても構いません。ただこの様な記法を知らないでいると初めて見たときに意味がわからなくなってしまうので、一応頭の片隅に入れておいた方が良いでしょう。

変数にはいくつかの種類があり、その種類のことをと言います。
Pythonで良く使用される基本的な4つの型(type)を紹介します。

型名意味
int整数0, 10, 25, -3, …
float浮動小数点0.1, -4.1, 1.2e-3, …
str文字列‘rain’, “summer”, ‘晴れ’, …
bool真偽値(ブール値)True, False
表3 変数の基本型

それぞれ順番に説明します。

int型(整数)

pythonでは代入することにより変数の型が決まります。
また、変数の型は type() の括弧()の中に変数を入れることで確認できます。

a = 10
type(a)

int

ここでは、a に 10を代入したとき、a の型(type)は整数(integer)を表す int であることを確認しています。この状態は以下のことをしない限り保持されいます。

  • a に別の型を代入する、もしくはfloat型が期待される累算代入演算子を適用する
  • ipynbのカーネルをシャットダウンする、もしくは再起動(jupyter labのコマンドモードで 00 )する

float型(浮動小数点数)

次に a に 小数点数の 1.3 を代入して変数の型を調べてみましょう。

a = 1.3
a, type(a)

(1.3, float)

この様に 1.3 を代入することにより、a はfloat型(浮動小数点数:floating-point number)の変数に変化しました。
float型の入力方法には小数点数以外にも、浮動小数点数による入力が可能です。例えば x と y に 1.2e-8 (1.2 × 10の−8乗)、3.4e+10 (3.4 × 10の10乗)を入力してみましょう。

x, y = 1.2e-10, 3.4e+10
x, y, type(x), type(y)

(1.2e-10, 34000000000.0, float, float)

この様に極端にゼロに近い数や絶対値が大きい数を使用するときは、浮動小数点数を使用するのが便利です。

int型に累算代入演算子を適用してみる

以下は累算代入演算子を適用すると変数の型が変わる例です。

a = 3
a += 0.1
a, type(a)

(3.1, float)

a += 0.1 は a += a + 0.1と同じです。これは a に改めて 3.1 を代入するのと同じ意味となり、a は float型に変わります。この様に累算代入演算子は、改めて変数を定義するのと同じ意味ですので、計算結果としてfloat型が導かれるときは、変数もfloat型に変わります。

inf(無限大)と nan(not a number)

float型の値として、無限大を表す inf と 非数(not a number)を表す nan があります。
数を大きくしていって無限大が inf になる境界を調べたところ、1.797e308と1.798e308の間にある様です。マイナス側の無限大は -inf と出力されます。

1.797e308, 1.798e308, -1.797e308, -1.798e308

(1.797e+308, inf, -1.797e+308, -inf)

float型の変数として inf を代入する場合は、以下の様に1.798e308以上の数字を代入するか、次節で学ぶ様にfloat関数で文字列(str型)の’inf’をfloat型に変換する必要があります。

a = 1e500
b = float('inf')
a, b

(inf, inf)

nan は非数(not a number)の略で、以下の様に inf 同士の計算や、文字列(str型)の’nan'(大文字可)をfloat型に変換することにより作成することができます。

1e500 - 1e500, 1e500/1e500, float('NaN')

(nan, nan, nan)

float には上記の様に表現可能な上限がありますが、int にはシステムのメモリが許す限り大きな数を代入することができます。

i = 11 ** 1000
i

2469932918005826334124088385085221477709733385238396234869182951830739390375433175367866116456946191973803561189036523363533798726571008961243792655536655282201820357872673322901148243453211756020067624545609411212063417307681204817377763465511222635167942816318177424600927358163388910854695041070577642045540560963004207926938348086979035423732739933235077042750354729095729602516751896320598857608367865475244863114521391548985943858154775884418927768284663678512441565517194156946312753546771163991252528017732162399536497445066348868438762510366191040118080751580689254476068034620047646422315123643119627205531371694188794408120267120500325775293645416335230014278578281272863450085145349124727476223298887655183167465713337723258182649072572861625150703747030550736347589416285606367521524529665763903537989935510874657420361426804068643262800901916285076966174176854351055183740078763891951775452021781225066361670593917001215032839838911476044840388663443684517735022039957481918726697789827894303408292584258328090724141496484460001

数値(numeric)型

以上のint型とfloat型、さらにもう一つcomplex(複素数)型を合わせて数値(numeric)型と言います。
complex(複素数)型は後の章で紹介します。
またbool型はint型のサブタイプになっており、これも数値型の一つに分類されます。
最初に紹介した表1は数値型変数に適用される演算です。表1以外にも以下のものがあります。

演算結果優先度(ABCの順)
abs(a)aの絶対値A
divmod(a, b)(x // y, x % y) A
pow(a, b)aのb乗 (a**bと同じ)A
表4 代数演算子

str型(文字列)

数値以外にも、変数には文字列を代入することができます。文字列(string)なのでstr型と呼びます。
文字列を入力するには、シングルクォーテーション ‘ ‘ 又はダブルクォーテーション ” ” のどちらか一方を使用して代入する文字列を囲います。

a = 'cat'
a, type(a)

(‘cat’, str)

文字列の中に、シングルクォーテーション ‘ が含まれる場合はダブルクォーテーション ” ” で囲めば代入できます。

b = "Feel. Don't think."
b

“Feel. Don’t think.”

反対に、ダブルクォーテーション ” が含まれる文字列はシングルクォーテーション ‘ ‘ で囲めます。

c = 'I say, "Yes."'
c

‘I say, “Yes.”‘

シングルクォーテーション ‘ とダブルクォーテーション ” の両方が含まれた文字列を代入する場合、バックスラッシュ \ を使えばその直後の文字はテキストと認識されます。バックスラッシュ \ はWindowsでは ¥ で、MACでは option+¥ で入力することが出来ます。

d = 'You say, "Feel. Don\'t think."'
print(d)
d

You say, “Feel. Don’t think.”
‘You say, “Feel. Don\’t think.”‘

この様に文字列内で \ を使って特殊な意味を持たせることをエスケープシーケンスと言います。但しエスケープシーケンスを含んだ文字を意図した通り、つまり \ を表示しないで出力するためには、上記の様にprint関数を使うことをお奨めします。ただし print関数では上記出力の1行目の様に strを意味する外側のクォーテーションが省略されて出力されます。
変数をボックスの最後の行に記載して出力する場合では、上記出力の2行目の様に \ を含んだ表示となる場合があります。

print("Isn't it?", 'Isn\'t it?', "\"Isn't it?\"", '"Isn\'t it?"')
"Isn't it?", 'Isn\'t it?', "\"Isn't it?\"", '"Isn\'t it?"'

Isn’t it? Isn’t it? “Isn’t it?” “Isn’t it?”
(“Isn’t it?”, “Isn’t it?”, ‘”Isn\’t it?”‘, ‘”Isn\’t it?”‘)

これらの様にprint関数を使えばどの書き方も意図した通りの出力となりますが、ボックスの最後の行に記載する方法では、 ‘ と ” が混在したときに \ が残ったり、strを意味する外側のクォーテーションが変化する場合があります。
また文字列の中に \+改行 を入れると、改行が無視されます。

e = 'You say, "Feel. Don\'t think."\
 I say, "Yes."'
print(e)

You say, “Feel. Don’t think.” I say, “Yes.”

反対に文字列の中に \n を入れるとその場所で改行されます。

f = 'You say, "Feel. Don\'t think."\nI say, "Yes."'
print(f)

You say, “Feel. Don’t think.”
I say, “Yes.”

三重引用符 ”’ または “”” を使えば複数行を改行を含めて代入することができます。

g = '''You say, "Feel. Don't think."
I say, "Yes."'''

print(g)

You say, “Feel. Don’t think.”
I say, “Yes.”

str型の変数は以下の様に足し算 (+) と整数による掛け算 (*) が可能です。

pet1 = 'cat'
pet2 = 'dog'
pet1 + pet2, pet1 * 2

(‘catdog’, ‘catcat’)

クォーテーションで囲んだ文字列を並べて記載する(間が空白のみ)と、自動的に連結されます。

p = 'Py' 'thon'
p

‘Python’

この様に、足し算は文字列同士の連結、整数による掛け算は文字列の繰り返しとなります。
以下の様に数字を文字列として入力することができますが、割り算をするとエラーになります。

a = '24'
b = '6'
c = a / b

これは割り算(/)はstr変数には適用できないことを意味しています。a と b に代入されたそれぞれ ’24’, ‘6’ は数字ではなく、文字として入力されているためです。
文字型については別章にてもう少し詳しく説明します。

bool型(真偽値[ブール値])

bool型の変数は、True(真)又は False(偽)の2値のどちらかをとる変数です。

a = True
b = False
a, b, type(a), type(b)

(True, False, bool, bool)

ブール型の変数は上記の様に代入して使用するケースは稀で、次章で学ぶif文の条件式などに比較演算の結果として知らないうちに使用している場合がほとんどです。

比較演算子とbool型変数

比較演算子

Pythonには以下の様な比較演算子があります。

演算子意味
a == baとbは等しい
a != baとbは等しくない
a < baはbより小さい
a > baはbより大きい
a <= baはb以下
a >= baはb以上
a is baとbは同一オブジェクトである
a is not baとbは同一オブジェクトでない
表5 比較演算子

注意する点として「等しい」を表す演算子は == です。間違って代入演算子である = を使うと代入文となってしまいます。

比較演算子とbool型変数の関係

ここで、以下の様な比較演算を行ってみます。

a = 20
b = 20
a == b, a != b

(True, False)

a と b は同じ20です。このとき a == b は正しいのでTrue、a != b は間違っているのでFalseとなります。

a = 20
b = 25
a == b, a != b, a > b, a < b

(False, True, False, True)

この場合 a は20、b は25です。 a == b は間違いですのでFalse、a != b は正しいのでTrueとなります。また a > b は間違いなのでFalse、a < b は正しいのでTrueです。

次にstr型で比較演算をしてみます。

my_pet = 'dog'
your_pet = 'cats'
my_pet == your_pet, my_pet != your_pet, my_pet > your_pet, my_pet < your_pet

(False, True, True, False)

このとき my_pet == your_pet は間違いなのでFalse、my_pet != your_pet は正しいのでTrueです。

また、str型に < や > を使用する場合は、文字のUnicodeのコードポイントの大小で判定します。Unicodeのコードポイントは ord 関数を使って確認することが出来ます。
Unicodeのコードポイントを一言で簡単に述べると世界中の文字に対して割り振られた番号です。コンピュータの中では文字はこの番号(コードポイント)で処理されています。

ord('0'), ord('1'), ord('A'), ord('B'), ord('a'), ord('b')

(48, 49, 65, 66, 97, 98)

同じ小文字のときはアルファベット順の前(ここでは cats)が小さく、後ろ(ここでは dog)が大きいと判定しますので、my_pet > your_pet はTrue、my_pet < your_pet はFalseとなります。

以上の様に比較演算をした結果は、bool型の値として出力されます。
その比較演算結果を変数に代入すると以下の様にbool型変数となります。また比較演算式それ自体もbool型として扱われます。

a = 20
b = 20
c = (a == b)
c, type(c), type(a == b)

(True, bool, bool)

三行目で c に (a == b)の結果を代入しています。c の変数の型は bool です。また (a == b) もbool型変数と同様に扱うことが可能です。ここで c = (a == b) の右辺の括弧は無くても問題ありませんが、ここでは分かり易さのために使用しています。

また == は数学的な意味で等しいことを意味し、is はオブジェクトが同じこと、つまり値だけではなく型も同じである必要があります。

a = 2
b = 2.0
type(a), type(b), a == b , a is b

(int, float, True, False)

上記では a は int型の2、b は float型の2.0です。このとき a == b は Trueですが、a is b では型が違うので False(同一オブジェクトではない)となります。
pythonはオブジェクト指向言語の一つなので、「オブジェクト」という言葉は重要なキーワードの一つです。この段階では、オブジェクトとは「値」だけではなく「型」を含むものであるという認識をして頂ければよろしいかと思います。

bool演算(論理演算)

bool型変数は以下のbool演算が可能です。(以下の説明は a, bがbool型であることを前提にしていますが、実際は他の型にも適用できる演算方法を使用しており後の章で詳しく述べます)

演算子意味優先度(ABCの順)
a and ba, b が共にTrueの時はTrue、Falseが一つでもあればFalseB
a or ba, b の内Trueが一つでもあればTrue、共にFalseの時はFalseC
not aa がTrueの時はFalse、Falseの時はTrueA
表6 ブール演算子

以下の表は a and b a, b が共にTrueの時はTrue、Falseが一つでもあればFalse)を表したものです。日本語表現では「かつ」で表現することができます。

aba and b
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse
表7 a and b

例えば、体重が50kg以上かつ60kg未満かどうかを判定する場合は、(weight >= 50) and (weight < 60) を使用します。

weight = 50.0
(weight >= 50) and (weight < 60)

True

この場合、weight >= 50 と weight < 60 の両方ともTrueの場合に結果がTrueとなります。

次に a or b の表を示します。日本語では「または」で表現されます。

aba or b
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse
表8 a or b

体重の例では、今度は上記と反対に、体重が50kg未満または60kg以上かどうかを判定する場合に、(weight < 50) or (weight >= 60) とします。

weight = 47.0
(weight < 50) or (weight >= 60)

True

このとき、weight < 50 と weight >= 60 の少なくともどちらかがTrueであれば結果がTrueとなります。変数と数字の表記の順番に決まりはありませんので、weight < 50 と書いても、50 > weight と書いてもどちらでも構いません。

print関数とコメント文

ここで、print関数とコメント文について簡単に説明します。

print関数

Jupyter labではコードセルの一番最後の行に変数を記載すると、その内容をコードセルの下に出力されます。
print関数は以下の様にコードの途中でも出力したい場合にも使用できます。
(下記は jupyter labのメニューの view→Show Line Number をクリックしてライン番号を表示してます)

一行目のprint文では ‘Hello, world’ という文字列を出力しています。
次に s1 に ‘Hello,’、s2 に ‘world’を代入して、四行目のプリント文で s1と s2 を並べて表示しています。このとき間には半角スペースが一つ自動的に挿入されます。
五行目のprint文では s1 + ‘ ‘ + s2 として文字列を合成したものを出力しています。
六行目は真ん中に改行を意味する ‘\n’ を入れていますので、出力の際には改行が入ります。バックスラッシュ(\)はWindowsでは ¥ で、MACでは option+¥ で入力することが出来ます。
最後の行のみはJupyter labの機能で s1 + ‘ ‘ + s2 の文字列が出力されます。この時は出力の前に[実行番号]: が表示されます。

print関数にはsepとendというオプションがあり、それらについて説明します。
()にカンマ区切りで記載したオブジェクトをprintする際、カンマの箇所は上記の様にスペース1個を自動的に挿入されますが、sep = ‘\n’とすることでカンマの箇所を改行にすることができます。

s1 = 'Hello,'
s2 = 'world'
print(s1, s2, sep = '\n')

Hello,
world

またprint文は最後に改行が一つ挿入されますが、こんどは end = ‘ ‘ とすることで、改行をスペースに変更することができます。

s1 = 'Hello,'
s2 = 'world'
print(s1, end = ' ')
print(s2)

Hello, world

コメント

以下の様に、コードセルの中に#で始まり改行で終わるコメントを記載することができます。コメント文は実行時には無視されます。コメント文を使うことで、コードの注釈を入れることが可能となります。#以降が自動的に薄い斜体文字に変わります。

Screenshot

また以下の様に、コードの途中をコメント文に変える(コメントアウトと言います)ことが出来ます。

複数行を選択して、Windowsでは ctrl+/ MACでは ⌘+/ を押すことで一気にコメントアウトすることが出来ます。またコメントアウトは複数行を選択して同じボタン(Windowsでは ctrl+/ MACでは ⌘+/ )で元に戻すことが出来ますので、是非試してみて下さい。

参考図書:https://book.impress.co.jp/books/1120101

おまけ 変数 _

アンダースコア _ には最後に表示された結果が代入されます。jupyter labで _ を使用すると以下の様になります。

tax = 10
price = 98
price * tax/100

9.8

price + _  # _ には 9.8 が代入されている

107.8

round(_)  # _ には 107.8 が代入されている

108

ここで roundは値を丸める関数です。「丸める」とは次章で詳しく説明しますが四捨五入に近いものです。また 1/3 を小数第二位までに丸める場合は、round(1/3, 2)とすると 0.33が出力されます。

変数の型変換

変数の型は以下の組み込み関数を使用することにより変換することができます。

関数名意味
int()int型(整数)に変換
float()float型(小数点数)に変換
str()str型(文字列)に変換
bool()bool型(真偽値)に変換
表9 変数型を変換する関数
  • それぞれの適用例を以下に紹介しますが、これらの内容全てを覚える必要はありません。疑問に思った時点でその都度それぞれの関数を使って確認して下さい。
  • エラーが発生する組み合わせは#をつけてコメントアウトしています。エラーを再現したい場合は該当する行のコメントアウトを外して(Windowsは ctrl+/、MACは⌘+/)エラーを確認して下さい。
  • 以下の変換の中でfloat型の値として、inf (無限大) と nan (Not a Number) がありますが、それぞれ 1e1000 (10の1000乗 -> inf), 1e1000/1e1000 (inf/inf -> nan) で作成しています。
print(1e1000, type(1e1000))  # inf 無限大
print(1e1000/1e1000, type(1e1000/1e1000))  # nan (Not a Number)

inf <class ‘float’>
nan <class ‘float’>

  • 出力のフォーマットとしてprint関数を使用し、説明用文字列+変換後のオブジェクト+型 の順に出力しています。type関数をprint関数を使用して出力すると上記の様に <class ‘float’> となりますが、これは float型の意味であると認識してください。

int() int型(整数)に変換

int(float型): float型→int型

小数点以下は切り捨てとなります。inf (無限大)はOverflowError、nan (Not a Number)はValueErrorとなります。

print('int(3.9) ->', int(3.9), type(int(3.9)))
print('int(-2.1e08) ->', int(-2.1e08), type(int(-2.1e08)))
# print("int(1e1000) ->", int(1e1000), type(int(1e1000)))  # OverflowError
# print("int(1e1000/1e1000) ->", int(1e1000/1e1000), type(int(1e1000/1e1000)))  # ValueError

int(3.9) -> 3 <class ‘int’>
int(-2.1e08) -> -210000000 <class ‘int’>

int(str型): str型→int型

数字のみの文字列(例えば ‘1234’)を整数にすることが可能です。文字列に小数点やアルファベットを含むとValueErrorとなります。

print(" int('1234') ->", int('1234'), type(int('1234')))
# print(" int('3.14') ->", int('3.14'), type(int('3.14')))  # ValueError
# print(" int('abc') ->", int('abc'), type(int('abc')))  # ValueError

int(‘1234’) -> 1234 <class ‘int’>

int(bool型): bool型→int型

Trueは 1 、Falseは 0 に変換されます。

print(' int(True) ->', int(True), type(int(True)))
print(' int(False) ->', int(False), type(int(False)))

int(True) -> 1 <class ‘int’>
int(False) -> 0 <class ‘int’>

またbool型は以下の様に足し算、引き算、掛け算を行うと int型に変換されます。

print(' True + False ->', True + False, type(True + False))
print(' True - False ->', True - False, type(True - False))
print(' True * False ->', True * False, type(True * False))

True + False -> 1 <class ‘int’>
True – False -> 1 <class ‘int’>
True * False -> 0 <class ‘int’>

float() float型(小数点数)に変換

float(int型): int型→float型

小数点が付いて小数点数になります。

print('float(10) ->', float(10), type(float(10)))

float(10) -> 10.0 <class ‘float’>

int型同志の割り算(/)を行うと割り切れる場合でも float型になります。

print('6 / 3 ->', 6 / 3, type(6 / 3))

6 / 3 -> 2.0 <class ‘float’>

float(str型): str型→float型

float型の表現の文字列であれば変換可能です。小数点表示(‘3.14’)、指数表示(‘2.1e-8’)、inf(無限大)、NaN(Not a number: 数字ではない)を含む。それ以外はValueErrorとなります。

print("float('3.14') ->", float('3.14'), type(float('3.14')))
print("float('+2.1e-8') ->", float('+2.1e-8'), type(float('+2.1e-8')))
print("float('inf') ->", float('inf'), type(float('inf')))
print("float('NaN') ->", float('NaN'), type(float('NaN')))

float(‘+2.1e-8’) -> 2.1e-08 <class ‘float’>
float(‘inf’) -> inf <class ‘float’>
float(‘NaN’) -> nan <class ‘float’>

float(‘+2.1e-8’) -> 2.1e-08 <class ‘float’>float(‘inf’) -> inf <class ‘float’>float(‘NaN’) -> nan <class ‘float’>

float(‘+2.1e-8’) -> 2.1e-08 <class ‘float’>
float(‘inf’) -> inf <class ‘float’>
float(‘NaN’) -> nan <class ‘float’>

float(int型): bool型→float型

Trueは 1.0 、Falseは 0.0 に変換されます。

print('float(True) ->', float(True), type(float(True)))
print('float(False) ->', float(False), type(float(False)))

float(True) -> 1.0 <class ‘float’>
float(False) -> 0.0 <class ‘float’>

bool型同志の割り算(/)を行うと float型になります。

print('False / True ->', False / True, type(False / True))

False / True -> 0.0 <class ‘float’>

str() str型(文字列)に変換

str(int型): int型→str型

文字型に変換されます。

print('str(10) ->', str(10), type(str(10)))

str(10) -> 10 <class ‘str’>

str(float型): float型→str型

小数点表示(3.14)、指数表示(2.1e-8)、inf、nanを含め全て文字列に変換されます。

print("str(3.14) ->", str(3.14), type(str(3.14)))
print("str(+2.1e08) ->", str(+2.1e08), type(str(+2.1e08)))
print("str(1e1000) ->", str(1e1000), type(str(1e1000)))  #inf
print("str(1e1000/1e1000) ->", str(1e1000/1e1000), type(str(1e1000/1e1000)))  #nan

str(3.14) -> 3.14 <class ‘str’>
str(+2.1e08) -> 210000000.0 <class ‘str’>
str(1e1000) -> inf <class ‘str’>
str(1e1000/1e1000) -> nan <class ‘str’>

str(bool型): bool型→str型

Trueは文字列のTrue、Falseは文字列のFalseに変換されます。

print('str(True) ->', str(True), type(str(True)))
print('str(False) ->', str(False), type(str(False)))

str(True) -> True <class ‘str’>
str(False) -> False <class ‘str’>

bool() bool型(真偽値 True/False)に変換

bool(int型): int型→bool型

0はFalse、0以外の整数は全てTrueに変換されます。

print('bool(10) ->', bool(10), type(bool(10)))
print('bool(0) ->', bool(0), type(bool(0)))

bool(10) -> True <class ‘bool’>
bool(0) -> False <class ‘bool’>

bool(float型): float型→str型

0はFalse、0以外は全てTrueに変換されます。

print('bool(0.0) ->',bool(0.0), type(bool(0.0)))
print("bool('+2.1e-8') ->", bool('2.1e-8'), type(bool('2.1e-8')))
print('bool(3.14) ->',bool(3.14), type(bool(3.14)))
print('bool(1e1000) ->', bool(1e1000), type(bool(1e1000)))  #inf
print('bool(1e1000/1e1000) ->', bool(1e1000/1e1000), type(bool(1e1000/1e1000)))  #nan

bool(0.0) -> False <class ‘bool’>
bool(‘+2.1e-8’) -> True <class ‘bool’>
bool(3.14) -> True <class ‘bool’>
bool(1e1000) -> True <class ‘bool’>
bool(1e1000/1e1000) -> True <class ‘bool’>

bool(str型): str型→bool型

データがない文字列の ” だけがFalse、それ以外は全てTrueに変換されます。

print("bool('1234') ->", bool('1234'), type(bool('1234')))
print("bool('abc') ->", bool('abc'), type(bool('abc')))
print("bool('0') ->", bool('0'), type(bool('0')))
print("bool('True') ->", bool('True'), type(bool('True')))
print("bool('False') ->", bool('False'), type(bool('False')))
print("bool('') ->", bool(''), type(bool('')))

bool(‘1234’) -> True <class ‘bool’>
bool(‘abc’) -> True <class ‘bool’>
bool(‘0’) -> True <class ‘bool’>
bool(‘True’) -> True <class ‘bool’>
bool(‘False’) -> True <class ‘bool’>
bool(”) -> False <class ‘bool’>

タイトルとURLをコピーしました