たくさんのデータで同じ処理を繰り返す | Python独学ならTech-Joho(11)

Python独学ならTech-Joho TOP > Python入門カリキュラム > たくさんのデータで同じ処理を繰り返す

For文とは

For文は、リストのようなたくさんのデータのまとまりの中の、一つ一つについて、同じ処理を繰り返すことのできる文です。

例えば、0から3までの数字をリストにまとめ、それぞれの数字をprint文を使って表示するプログラムを、下のように書くことができます。

>>> for i in [0,1,2,3]:
...   print('今の数字:'+str(i))
... 
今の数字:0
今の数字:1
今の数字:2
今の数字:3

* for文とは関係ありませんが、str()関数で、整数(int)型の数値を文字列に変えているところに気をつけて下さい。

For文の構造

For文には、どんなFor文でも常に必要な部分と、どのようなデータをどのような繰り返し処理したいか、によって変わる部分があります。

それを図に書いてみました。
for文の概念図

この図の白い字の部分、「for」、「in」、「:」の3つはどんなfor文にも必ず出てきます。
この図の赤い字の部分「一つ一つの要素」、「リストなどのデータの塊」、「「一つ一つの要素」を使った処理」の3つは、その時for文を使ってどのようなことをしたいかによって変わります。

例えば、上の0から3の数字を表示する例では、
「一つ一つの要素」が変数”i”、
「リストなどのデータの塊」が整数のリスト”[0, 1, 2, 3]”、
「「一つ一つの要素」を使った処理」が、”print(‘今の数字:’+str(i))”、というpythonの文で、「今の数字:」という文字列のあと、変数iを文字列に変換してprint文で表示しています。

このように、forの後ろには”i”、”value”、”hensuu”のように「一つ一つの要素」を入れる好きな変数名を、inの後ろには「リストなどのデータの塊」を書くことになります。

For文が動く3つのステップ

このfor文の意味、動き方は3ステップに分けて考えると分かりやすいと思います。

  1. inの後ろに書いた「リストなどのデータの塊」から、順番にデータを1つ取り出す
  2. 取り出したデータが、forの後ろに書いた「一つ一つの要素」に代入される
  3. forの下のブロックに書いた「一つ一つの要素」を使って何か処理をする
  4. ステップ1に戻り、「リストなどのデータの塊」の次のデータを取り出す
  5. 以下、繰り返し…

0から3の数字を表示するfor文の動きを、このステップ毎に考えてみましょう。

ステップ1:inの後ろに書いた「リストなどのデータの塊」から、順番にデータを1つ取り出す

>>> for i in [0,1,2,3]:

「リストなどのデータの塊」は、inの後ろに書いてあります。
この例だと、”[0,1,2,3]”です。

そこから、順番にデータを一つ取り出します。
まずは、一番最初の”0″です。

ステップ2:取り出したデータが、forの後ろに書いた「一つ一つの要素」に代入される

>>> for i in [0,1,2,3]:

「リストなどのデー
「一つ一つの要素」はforの後ろに書いてあります。
forの後ろは”i”です。
つまり、iに0が代入されます。

このあと、for文の下のブロック(字下げされた部分、つまり「「一つ一つの要素」を使った処理」のところ)では、iは0です。

ステップ3:forの下のブロックに書いた「一つ一つの要素」を使って何か処理をする

...   print('今の数字:'+str(i))

「「一つ一つの要素」を使った処理」は、”print(‘今の数字:’+str(i))”、つまり、
‘今の数字:’という文字列を、iという変数に入ってる内容をくっつけてprint文で表示されています。
iは今は0なので、”print(‘今の数字:’+str(i))”は、”print(‘今の数字:0’)”と同じことです。

最終的に、’今の数字:0’と表示されます。

ステップ1に戻り、「リストなどのデータの塊」の次のデータを取り出す

ここまでで、for文の下のブロック(字下げされた部分、つまり「「一つ一つの要素」を使った処理」のところ)が終わりました。
今度は、ステップ1に戻ってまた同じことを繰り返します。

ただし、今度はステップ1では、リストに入っている次のデータを取り出します。
つまり、0のとなりの1です。
先程はiが0でしたが、今度はiに1が代入されます。
すると、最終的に’今の数字:1’と表示されます。

同じ要領で、0, 1, 2, 3とリストの中の数字が順番にiに代入され、そのiを使ってforの下に書いた処理が実行されていきます。
結果として、0から3の数字が全て下のように表示されることになります。

今の数字:0
今の数字:1
今の数字:2
今の数字:3

For文の練習問題

For文の書き方、動き方についてわかりましたか?
練習問題を幾つか用意したので、これをときながら、しっかり理解しているかどうか確認してみましょう。

forとrangeとprintの基本問題(1)



<< 前へ 第10回 場合によって処理を分ける

>> 次へ 第12回

Turtleを使ってpythonで絵を描く

Python独学ならTech-Joho TOP > いろいろやってみた > Turtleを使ってpythonで絵を描く

Turtleモジュール

Pythonで絵を描く、となればまずはTurtleモジュールです。

より高度なPygameやKivyを使った方法も別ページ紹介しています。

Kivyを使ってPythonで絵を描く

Pygameを使ってPythonで絵を描く

Turtleモジュールは、ペンを持った亀を操って絵を描くことのできるタートルグラフィックスのPython版です。

参考
タートルグラフィックス (公式ドキュメント)

https://docs.python.jp/3/library/turtle.html

このページでは、下の黒い欄で、実際にPythonコードを実行できます。
この後の説明の通り、自分でも絵を書いてみましょう。

まず、下のリンクをクリックして、お絵かきウインドウを別に開いて下さい。
お絵かきウインドウを開く

お絵かきウインドウは、このようになっています。
turtle window

左の方に黒い欄があります。
ここに、Pythonコードを書いていきます。
黒い欄の使い方はこちら

右に白いスペースが開いていますが、ここに絵が出力されます。

まず円を描いてみよう

さっそくですが、まず円を描いてみましょう。

下のコードを、お絵かきウインドウの黒い欄に1行ずつコピー&ペーストして、エンターを押していってください。

>>> import turtle
>>> t=turtle.Turtle()
>>> t.circle(100)
>>> turtle._Screen().end()

こんな風に、円が描かれたはずです。
Turtleモジュールではこのようにコードを入力することで絵を描くことができます。
turtle circle

上のコードを1行ずつ解説していきます。

>>> t=turtle.Turtle()

この行では、turtleモジュールを読み込んでいます。
turtleモジュールには、絵を描くための様々なクラスや関数が入っています。
これを利用できるように読み込んでいます。

>>> import turtle

この行では、 先程読み込んだturtleモジュールの中に入っているTurtleというクラスのインスタンスを作っています。
筆を持った亀を一匹呼び出すイメージです。
この亀は、変数tに代入しています。
変数tに入っている、亀(Turtleクラスのインスタンス)の様々なメソッドを実行することで、この後絵を書いていきます。

>>> t=turtle.Turtle()

この行では、変数tに入っている、亀(Turtleクラスのインスタンス)に、半径100の円をかけ、と命令しています。
円を書く命令なので、circleという名前のメソッドを実行しています。
また、cicrleメソッドの引数は半径です。半径100なので、カッコの中に100と書いてあります。

>>> t.circle(100)

この行では、今まで入力した命令を、実行しろ、という命令をだしています。
そのため、この行を実行すると、円が描かれます。
ただし、この行は、通常のPythonでは必要がありません。
このサイトのように、ブラウザ上で動かすPython(Brython)の場合だけ、必要な内容です。

>>> turtle._Screen().end()

Turtleモジュールのいろいろな使い方

まず、お絵かきウインドウをリロードして下さい。
今までの内容が全て消えます。

次に、下の内容を全てコピーして、お絵かきウインドウの黒い欄にペーストし、エンターを押してください。
このように、1行ずつでなく、一気に複数行を実行することができます。

import turtle
t=turtle.Turtle()
t.shape("turtle")
t.color("red")
t.forward(100)
t.penup()
t.left(90)
t.forward(100)
t.right(90)
t.pendown()
t.width(5)
t.color("blue")
t.forward(100)
turtle._Screen().end()

このように、線が2本表示されたと思います。

turtle some functions

一番最初の”t=turtle.Turtle()”と、一番最後の”turtle._Screen().end()” の部分は前と同じです。

それ以外のところはだいぶ違いますね。
ここでは、新しいテクニックを5つ(とおまけ1つ)使っています。

真っ直ぐ進む

タートルグラフィックスでは、亀のアイコンが常に筆を持って移動しているイメージです。
亀が移動すると、そのあとには線が引かれます。

forwardというメソッドを使うと、亀が真っ直ぐ進み、線を引きます。
引数の数値のぶんだけ進みます。
下では、100進んでいます。

t.forward(100)

向きを変える

right、leftというメソッドで、右左に向きを変えられます。
引数には、曲がる角度をしてします。
下の例では、90度右に曲がっています。

t.right(90)

線の色を変える

colorメソッドを使います。
引数に英語で色の名前を指定します。
下の例では赤色にしています。

t.color("red")

ペンを上げて移動する

今まで、亀が移動すると必ず線が引かれていましたが、penup関数を使うと、その後は線が引かれなくなります。
線を引かずに移動だけするのに便利です。
また、pendown関数を使うとまた、線が引かれるようになります。

t.penup()
t.pendown()

ペンの太さを変える

width関数を使うと、先の太さを変えられます。
引数は太さの数値です。

t.width(5)

おまけ:アイコン亀にする

線を引いているときの、アイコンが矢印ではなく亀になっていたのに気づきましたか?
turtle shape

これは、3行のshapeメソッドで変えています。

import turtle
t=turtle.Turtle()
t.shape("turtle") # 亀にしている

このようなテクニックを使えば、いろいろな絵がかけるはずです。

タートルグラフィックスで描いた例

下の絵は、PythonをPC内にインストールした時についてくる、タートルグラフィックスのサンプルです。
詳しくはこちらに説明があります
このような絵を、このページにあるテクニックで描くことができます。
みなさんも、ぜひ、好きな絵をかいていみてください。

example forest

実際に動く時計です。
moving clock

実物はくるくるとアニメーションします。round dance

場合によって処理を分ける | Python独学ならTech-Joho(10)

Python独学ならTech-Joho TOP > Python入門カリキュラム > 場合によって処理を分ける

If文とは

>や<といった演算子を使ってPythonに式を渡すと、与えられた条件式が成り立つときはTrue(真)、成立しないときはFalse(偽)が返ってきます。
if文は、この診断結果によって、プログラムの流れを変化させることができるものです。

例えば、変数suujiが2より大きいと’2より大きい’、小さいと’2より小さい’と表示するプログラムは以下になります。(下の黒い欄に1行ずついれてみてください。)

>>> suuji = 1
>>> if suuji > 2:
...   print('2より大きい')
... else:
...   print('2より小さい')
... 
'2より小さい'

if suuji > 2:を入れると、>>>となっていたところが…と変化します。
最後の(‘2より小さい’)の行のあとは、1行何もいれないままエンターキーを押して改行してください。

suujiは1なので、常に’2より小さい’が表示されるはずです。

ifの練習1

上の例で、suujiを2, 3, 4, 5にして実行してみてください。何が表示されますか?

値がその都度変わるものを使わないと、if文のありがたさはわかりません。
ユーザの入力を受け付けるinput関数を使う例をみてみましょう。

input関数の使い方はこちらに書いてあります。

>>> nyuuryoku = input('数字を入力して下さい')
>>> suuji = int(nyuuryoku)
>>> if suuji > 2:
...   print('2より大きい')
... else:
...   print('2より小さい')
... 

 


else

if のあとに書く、条件が成立しなかった時に、別の処理が実行させるようにするのが、elseです。
上と同じ例ですが、もう一度見て下さい。

>>> suuji = 1
>>> if suuji > 2:
...   print('2より大きい')
... else:
...   print('2より小さい')
... 
'2より小さい'

suujiという変数に代入されたのは、1です。
ifの後にある条件は、「suujiが2より大きい」です。

すると、ifのあとの条件は成立していません。
その場合、
ifのすぐ下に書いた内容ではなく、ifに続いて書いたelseの後の下に書いた内容が実行されます。

 


elif

elifという、elseとifをくっつけたような文もあります。

上の例を少し変えて、elifという文が真ん中辺りに増えています。
elifの下の部分が実行される条件を日本語にすると、「suujiが2以下で、もし1より大きければ」となります。

>>> suuji = 2
>>> if suuji > 2:
...   print('2より大きい')
... elif suuji > 1:
...   print('1より大きい')
... else:
...   print('1以下')
'2より小さい'

elifは、もし上に書いてある条件が当てはまらかなったら、右に書いてある条件をチェックする、という意味です。
下の例のように、elifをたくさん書くこともできます。

>>> suuji = -2
>>> if suuji > 2:  # 最初の条件
...   print('2より大きい')  
... elif suuji > 1: # 最初の条件が当てはまらかなったらチェックする条件
...   print('1より大きい')
... elif suuji > 0: # 次の条件が当てはまらかなったらチェックする条件
...   print('0より大きい')
... else:  # 上に書いてある条件が全て当ては余らなかったら
...   print('0以下')
'0以下'

この例だと、まず、suujiが2より大きいかをチェックします。(最初の条件)

当てはまらかなったら、suujiが1より大きいかをチェックします。(最初の条件が当てはまらかなったらチェックする条件)

さらに、これも当てはまらかなったら、suujiが0より大きいかをチェックします。(次の条件が当てはまらかなったらチェックする条件)

さらに、これも当てはまらかなったらelseの下に書いてある内容が実行されます。

 

どんどん下の条件に流れていく感じです。


ifの練習2

下の条件を満たすif、elif、elseを使ったコードを黒い欄で実行してみて下さい。

  • input関数を使ってユーザに数字入力させる
  • ユーザが入力した数字をint関数でint型に変換する
  • 変数suujiに、int型に変換した数字を代入する
  • suujiが10より大きかったら’10より大きい’と表示
  • suujiが10以下で、5より大きかったら’5より大きい’と表示
  • suujiが5以下だったら’小さい!!!’と表示

 


andとor

ifの後には、andとorで2つの条件を書くこともできます。

>>> suuji = -2
>>> if suuji > 2 and suuji < 5 :
...   print('5と2の間') 
... else: 
...   print('5以上か、2以下')
'0以下'

くわしくはこちら(執筆中….)で解説する予定です。

 



<< 前へ 第9回 たくさんのデータを1つにまとめる

>> 次へ 第11回 たくさんのデータで同じ処理を繰り返す


input関数|Python用語辞典

Python独学ならTech-Joho TOP > Python用語辞典 > inputで入力を受け付ける

inputで入力を受け付ける

input関数は、その名の通り、ユーザからの入力(input)を受け付ける関数です。
まず、文字で説明するより使ったほうが理解しやすいと思います。
下の黒い欄に、”suuji = input(‘数字を入力して下さい’)”と入力してください。

>>> suuji = input('数字を入力して下さい')

すると、こんな風に、’数字を入力して下さい’と書いたウインドウがでてきます。

Brythonによる入力ダイアログ

入力欄に’1’か何か、数字を入力してOKを押して下さい。
すると、ウインドウが閉じます。

実は、この時点で、suujiという変数に今入力した数値が代入されています。
下のように、print(suuji)と入力してエンターキーを押して下さい。

>>> suuji = input('数字を入力して下さい')
>>> print(suuji)
1

先程入力した数値が表示されます。

input関数の引数

input関数は人間(ユーザ)に入力をさせて、その値を返す関数です。
inputの引数は、入力させるときに表示する文言です。

こうすれば、’何か入力して下さい’と表示されます。

>>> input('何か入力して下さい')

input何か入力して下さい。

こうすれば、’ああああ’と表示されます。

>>> input('ああああ')

inputあああ

下の黒い欄で自分で試してみてください。

inputの引数の練習

ユーザに’アルファベットを入力!!’と表示する、input関数の引数を考えて実行してください。

input関数の戻り値

繰り返しになりますが、input関数は人間(ユーザ)に入力をさせて、その値を返す関数です。
inputの戻り値は、人間が入力した関数です。

下のコードでは、my_inputに、ユーザが入力した値を代入します。

>>> my_input = input('何か入力して下さい')
>>> print(my_input)

なので、my_inputをprintすると、ユーザが入力した文字列が表示されます。

ちなみに、input関数の戻り値は常に文字列になります。
なので、数字を入力しても、数値の文字列になってしまいます。

‘1’ * 5 は 5ではなく、文字列’1’を5こくっつけた’11111’になります。

>>> my_input = input('何か入力して下さい') # 1を入力する
>>> print(my_input * 5)
'11111'

数値として計算したいときは、int関数やfloat関数で、文字列を数値に変換しましょう。

>>> my_input = input('何か入力して下さい') # 1を入力する
>>> int(my_input) * 5
5 

intやfloat等、変数の型についてはこちらをみてください。
変数の型について/

inputの戻り値の練習

ユーザに数値を入力してもらい、それを100倍して表示するプログラムを実行してください。

ふつうのPythonだとウインドウはでてこない

なお、これまで、input関数を実行するとウインドウがでてきましたが、それはこのサイト上でPythonを実行しているときだけの話です。(正確に言うとBrythonをつかっているときだけ)

自分のPCにPythonをインストールして使っている場合、ウインドウはでず、単にinputの引数にしたメッセージが表示されるので、そのまま黒い画面に入力できます。こんな感じです。

>>> message = input('please input!! : ')
please input!! : はーい
>>> print(message)
'はーい'

たくさんのデータを1つにまとめる| Python独学ならTech-Joho(9)

Python独学ならTech-Joho TOP > Python入門カリキュラム > たくさんのデータを1つにまとめる

たくさんのデータを1つにまとめる

Pythonには、複数のデータを1つにまとめるためのデータ型がいくつかあります。

よくつかうのが、リスト(list)、タプル(tuple)、辞書(dictionary)、セット(set)の4種類です。

下の黒い欄では、Pythonのコードを実際に実行してみることができます。
このページに出てくる例を、打ち込んで試してみて下さい。

 


リスト

リストは、文字通りいろいろなデータのリストと考えて下さい。
1, 2, 3等、数字のリスト、や、”ごはん”, “パン”, “麺” など文字列のリストなど、色々作れます。

>>> [1, 2, 3]
[1, 2, 2]
>>> ['ごはん', 'パン', '麺']
['ごはん', 'パン', '麺']
>>> [1, 'a', 1.00, 'alpha']

最後の例みたいに、数字と文字列が混ざったリストも作れます。
リストの各要素のデータ型に制限はありません。

リストの作り方

既に上で書いてしまいましたが、リストを作るには、リストに入れたいデータを”,”(コンマ)で区切ってつなげて、全体を[](角かっこ)でくくります。

>>> my_list = [1, 2, 3]
>>> print(my_list)
[1, 2, 3]

ちなみに、[と]のことを角かっこと呼ぶのを今知りました。
https://ja.wikipedia.org/wiki/%E6%8B%AC%E5%BC%A7

なお、角かっこだけを書けば、空のリストをつくることもできます。

>>> empty_list = []
>>> print(empty_list)
[]

要素へのアクセス

例えば、あるリストの2番目の要素を取り出すなど、リストの特定の要素だけにアクセスできます。
つまりこういうことです。

>>> my_list = [1, 2, 3]
>>> print(my_list[1])
2

わかりますか?
my_listの番号1(前から2番目)の要素を取り出してみました。
取り出すには、リストの変数名の後ろに[]でくくって、取り出したいデータの番号を入れます。

pythonでは、リストの番号は0から始まります。
なので、前から2番目の要素は、番号1になります。

同じように、前から3番目の要素は、番号2になります。

>>> my_list = ['a', 'b', 'c']
>>> print(my_list[2])
c

要素の追加・変更・削除

リストには、後から要素を追加できます。

追加するには、appendメソッドを使います。

>>> my_list = ['a', 'b', 'c']
>>> print(my_list)
['a', 'b', 'c']
>>> my_list.append('d')
>>> print(my_list)
['a', 'b', 'c', 'd']

この例では、’d’をリストの一番後ろに追加しています。

リストの要素は、変更することができます。
変更は、要素にアクセスするときと似ています。
変数名の後ろに[]と変更したい要素の番号を書いて、そこに=で代入します。

>>> my_list = ['a', 'b', 'c']
>>> print(my_list)
['a', 'b', 'c']
>>> my_list[2] = 'cccc'
>>> print(my_list)
['a', 'b', 'cccc']

この例では、リストの3番目(番号2)の要素を、’c’から’ccc’に変えました。

また、リストの要素を削除するには、popメソッドを使います。

>>> my_list = ['a', 'b', 'c']
>>> my_list.pop(1)
>>> print(my_list)
['a', 'c']

リストの連結

リスト同士で足し算すると、つながります。

>>> my_list = ['a', 'b', 'c']
>>> other = ['x', 'y', 'z']
>>> print(my_list + other)
['a', 'b', 'c', 'x', 'y', 'z']

 

リストについてのもう少し詳しい内容は、こちらで解説する予定です。

リスト[]

リストを操作する動画をとりました。こんな感じになります。


タプル

タプルは変更できないリストみたいなものです。
丸かっこ()を使ってつくります。

>>> my_tuple = (1, 'a', 'あ')
>>> print(my_tuple)
(1, 'a', 'あ')

タプルの要素にアクセスするときは、リストと同じように[]を使います。

>>> my_tuple = (1, 'a', 'あ')
>>> print(my_tuple[1])
'a'

タプルの要素を、変更することはできません。変更しようとすると、エラーがでます。

>>> my_tuple = (1, 'a', 'あ')
>>> my_tuple[1] = 'あいうえお'
Traceback (most recent call last):
  module __main__ line 134
    traceback.print_exc()
  module  line 1
    my_tuple[1] = 'あいうえお'TypeError: 'tuple' object does not support item assignment

 


辞書

辞書は、番号ではなく、文字列に対応づけてでデータを保存できるものです。
英語のまま、ディクショナリとカタカナで書いてよぶこともあります。
どういう意味かというと、リストでは、個々の要素を0番, 1番, という風に数字で指定しますが、
辞書では、’a’, ‘b’など文字列で指定できます。
また、リストは角かっこ[]でつくりましたが、辞書は波かっこ{}でつくります。

この例を見てください。

>>> fruits = {'apple': 'リンゴ', 'orange': 'オレンジ', 'melon': 'メロン'}
>>> print(fruits)
{'apple': 'リンゴ', 'orange': 'オレンジ', 'melon': 'メロン'}
>>> fruits['orange']
'オレンジ'

この例では、英単語とその訳の日本語をペアで保存しています。変数名furuitsの後ろに[]を続けて、中に’orange’といれると、’オレンジ’という対応付けた文字列が取り出せました。

こういう例もあります。都道府県名と、その件が関東にあるか関西にあるか、という文字列を対応付けています。

>>> prefectures = {'東京': '関東', '神奈川': '関東', '大阪': '関西'}
>>> print(prefectures)
{'東京': '関東', '神奈川': '関東', '大阪': '関西'}

この場合、変数名prefecturesの後ろに、[]をつけて、中に’東京’といれると、’関東’が取り出せました。

>>> prefectures = {'東京': '関東', '神奈川': '関東', '大阪': '関西'}
>>> print(prefectures['神奈川'])
'関東'

辞書の練習

>>>languages = {'ruby': 'ルビー', 'php': 'ピーエイチピー', 'python': 'パイソン'}

上のlanguagesは、プログラミング言語の英語の名前とそのよみかたの辞書です。
下の黒い欄にプログラミングを書いて、上の辞書からpythonの読み方を取り出して表示してみて下さい。


セット

重複のないデータの集まりです。
リストでは、[1, 2, 1, 3, 1]のように、要素同士に同じものがあっても大丈夫ですが、セットは同じものが入りません。

セットをつくるには、空っぽのセットを作ってから、要素を追加します。

>>> test_set = set() #空のセットを作ります。
>>> print(test_set)
set([ ])
>>> test_set.add('a')
>>> test_set.add('b')
>>> test_set.add('c')
>>> print(test_set)
set(...)

または、既存のリストやタプルをセットへと変換して作ります。

>>> from_list = set(['か','き','く'])
>>> print(from_list)
set({'か', 'き', 'く'})

セットの練習

空っぽのセットをつくってから、’a’を3こ追加して、printしてみてください。

 


<< 前へ 第8回 データ型とオブジェクト

> > 次へ 第10回 場合によって処理を分ける


データ型とオブジェクト |Python独学ならTech-Joho(8)

Python独学ならTech-Joho TOP > Python入門カリキュラム > データ型とオブジェクト

データ型とオブジェクト

かんたんなデータについては前に説明しました。
このページでは、データ型についてより詳しいことを、オブジェクトという考え方を使って説明しましす。

データ型のおさらい
第5回 変数の型について

 


文字列とメソッド

文字列型のデータを1つ用意すると、いろいろと便利なことができました。

>>> abc = ‘Alpha, Beta’
>>> abc.split(‘,’)
[‘Alpha’, ‘Beta’]

他にも、indexメソッドを使うと、引数で指定した文字が、何番目か分かります。

>>> abc.index(‘,’)
5

ちなみに、順番は一番最初が0番になります。

このように、文字列データを1つ用意するだけで、spllitやindexといった便利なメソッドをすぐに使うことができます。

 


フルーツと道具

ここにフルーツの「リンゴ」が1つあるとします。
このリンゴをどうしましょうか?
リンゴの扱いには、いろいろあります。

ナイフで普通に皮をむいて食べることもできます。
ミキサーを使ってジュースにして飲むの美味しいですね。
また、ちょっとひねった考えですが、植木鉢と土があれば種を植えて芽をださせ、リンゴの木を育てることもできます。

リンゴ


これらはすべて、フルーツのための道具のセットです。
普段は、「フルーツ」という言葉を聞いても実際のオレンジやリンゴしか思い浮かばいですが、ここでは、こうした道具も含めて「フルーツ」と考えます。
ちょっと変な考え方ですが、なんとか慣れて下さい。

「道具も含めてフルーツ」です。

 

文字列データ型を用意すると、いろいろなメソッドを使うことができました。

これを、材料としてのリンゴと、それを料理するための道具セットにも当てはめられます。
データにはそれぞれ型があったように、果物型を考えてみましょう。

文字列型と果物型

文字列データの場合、実際の内容は、それぞれの使うシチュエーションによって違います。例えば、’Red’、’Blue’など、いろいろな文字列を用意できます。これは、果物型で言えば、リンゴではなくてオレンジやメロンを用意することに似ています。

果物屋さんでリンゴを買っても、ナイフやミキサーなどの道具をおまけでくれることはありません。しかし、Pythonは親切なので、データをいろいろな方法で扱う道具を用意してくれます。これが、既に習ったメソッドです。

メソッドについてはこちら
第7回 関数とメソッドを使ってみる

Pythonが用意してくれるメソッドには、必要そうなものがだいたい揃っています。。これらの道具(メソッド)を上手に使うことで、プログラムをすばやく作ることができます。

「オブジェクト」とか「オブジェクト指向」という言葉を知っていますか?

オブジェクトとは、Pythonでは、データ型と同じような意味です。

Pythonにおける型は、実際のデータとそれを処理するメソッドが一緒になっているものです。
このものがオブジェクト。
オブジェクト指向とは、このものとしてのオブジェクトを使ってプログラミングすることです。

 


実体を作る

データ型は、実体が無い概念だけで、実際に使うには、実体(インスタンス)を作る必要があります。
果物型の例でいうと、果物型というのは果物全体を表す概念です。
それに対し、リンゴとかオレンジなどの実物がインスタンスに当たります。

文字列型で考えてみましょう。
「文字列型」というのは概念です。それに対し、いろいろなときに実際に使う’Alpha’だとか、’Orange’、’Osaka’などの実際の文字列がインスタンス、実体です。)

あるデータ型の実体を作るには、そのデータ型を同じ名前の関数を使います。

例えば、文字列型は本当は、str型という名前でした。
第五回 変数の型について
strという名前の関数を、作りたい文字列を引数に渡して実行すると、str型のインスタンスができます。
この、データ型と同じ名前の関数が「初期化メソッド」というものです。
下の例では、できたインスタンスをmy_strという変数に代入しています。

>>> my_str = str('Nagoya')
>>> print('Nagoya')
Nagoya

実は、下のように書いても、同じことです。文字列型(str型)のインスタンスを用意しています。

>>> my_str = 'Nagoya'
>>> print('Nagoya')
Nagoya

文字列(str)、整数(int)、小数(float)などは、組み込みデータ型といいます。
初期化メソッドを使う必要がないようになっています。

 


date型をつかってみる

もっと高機能なオブジェクトをつかってみましょう。
Pythonには、「日付」を表すdate型というデータ型が用意されています。

datetime型を使うには、最初にこのようにimport datetimeを実行する必要があります。

>>> from datetime import *

これはモジュールのimportという操作です。詳しくは別なページで解説します。

インスタンスを作る

特定の日を表す、date型のインスタンスをつくってみましょう。
下の例では、2020年1月1日のインスタンスを作っています。

>>> day = date(2020,1,1)
>>> print(day)
2020-01-11

date型のメソッド

date型は、その日が何曜日かを教えてくれるメソッド「weekday」を持っています。
このメソッドは、曜日を0から始まる数字で返します。0が月曜日、1が火曜日…と続き、6が日曜日です。

>>> day.weekday()
2

2020年1月1日の場合、2なので、水曜日という意味です。

実体がなくても使えるdate型のメソッド

date型は、実体がなくても使えるメソッドとして、todayを持っています。

>>> kyou = date.today()
>>> print(kyou)
2017-10-01

date型の引き算

date型も、引き算ができ、2つの日付の差を計算できます。
先程の、2020年1月1日から、今日の日付を引いてみましょう。

>>> sa = day - kyou
>>> print(sa)
822days, 0:00:00

2020年オリンピックイヤーまではあと822日でした。(もちろん、このコードを実行する日付によって日数は変わります。2020年よりあとに実行していたら、マイナスの日数かもしれません。)

データの属性

インスタンスが、属性やプロパティと呼ばれる変数を持っている場合があります。
例えば、上の例に出てきた日数の差を表す変数saは、実はtimedelta型のデータで、daysという変数(属性)を持っています。

>>> print(sa.days)
822

データ型の調べ方

ちなみに、typeという関数を使うと、インスタンスのデータ型を調べることができます。

>>> type(sa)
<class 'timedelta'>
>>> type(kyou)
<class 'date'>
>>> type(1)
<class 'int'>

 


<< 前へ 第7回 関数とメソッドを使ってみる
>> 次へ 第9回 たくさんのデータを1つにまとめる

Python入門

第1回 Python Hello World

第2回 Pythonでできること

第3回 簡単な計算をしてみよう

第4回 変数に値を代入する方法

第5回 変数の型について

第6回 比較する演算子

第7回 関数とメソッドを使ってみる

第8回 データ型とオブジェクト

第9回 たくさんのデータを1つにまとめる


関数とメソッドを使ってみる | Python独学ならTech-Joho(7)

Python独学ならTech-Joho TOP > Python入門カリキュラム > 関数とメソッドを使ってみる

関数とメソッドを使ってみる

Pythonでは、2つの数値が等しいか、それとも大小に差があるのかを、比べることができます。

下の黒い欄で、実際にPythonコードを実行してみよう。

黒い欄の使い方はこちら


関数は道具

道具を使う人

プログラミングでいう「関数」は道具のようなものだと思って下さい。
何かのデータを「関数」という道具に入れると、何らかの結果のデータが返ってきます。

関数のイメージ

「関数」という言葉は高校の数学でもでてきます。
しかし、数学が苦手な方は、数学の関数はとりあえずおいておいて、「関数は道具」ということを理解して下さい。

 


長さを測る関数

lenという名前の関数があります。
これを使うと、いろいろなデータの長さを測ることができます。

黒い欄に、このようにlen(‘適当な文字列’)と入力してみてください。

>>> len('適当な文字列')
6

‘適当な文字列’という文字列の文字数6が表示されました。

len関数を使うには、lenの後ろに()を書き、その()の中に長さを測りたいデータを入れます。

例えば下のようにすれば、今度は8が返ってきます。

>>> len('aabbccddee')
8

引数、戻り値

()の中身を、引数(ひきすう)といいます。

関数から帰ってきたデータ(この場合8)を、戻り値(もどりち)といいます。

>>> 関数(引数)
戻り値

こんなイメージです。

ちなみに、戻り値は変数にとっておくこともできます。

>>> x = len('aiueo')
>>> x
5

 

lenの練習

いろいろなデータをlen関数の引数にして、実行してみましょう。
1、’abcd’、[‘あ’, ‘い’, ‘う’]など….

 


データを文字列に変換する関数

strという関数を使うと、数値等のデータを、文字列に変換することができます。
どのような時に使うのか見てみましょう。

Pythonでは、数値同士の足し算ができます。

>>> 1 + 2

5

さらに、実は文字列同士の足し算?もできます。

>>> 'ごはん' + 'ですよ'
'ごはんですよ'

正確には足し算というより、文字列の結合、つまり文字列をつなげる処理です。

では、文字列と数値を足すとどうなるでしょうか?

>>> 'USO' + 800
Traceback (most recent call last):
  module __main__ line 145
    traceback.print_exc()
  module  line 1
    'USO' + 800TypeError: Can't convert int to str implicitely

このように、エラーになってしまいます。

エラーを読むと、” Can’t convert int to str implicitely”と理由がかいてあります。
これは、int型のデータ(整数の数値)を、str型のデータ(文字列)に暗黙的に変換できません、といわれています。

要は、数値は数値と、文字列は文字列としか、足せません。
数値と文字列を足したいときは、どちらかにデータの型をあわせないといけません。

そのために、数値を文字列に変換する時、str関数を使います。
こんな感じです。

>>> 'USO' + str(800)
'USO800'

str関数は、文字列を表すstr型と同じ名前になっており、データをstr型に変換するということがわかりやすいと思います。

 

strの練習

いろいろなデータをstr関数の引数にして、実行してみましょう。
1、3.1415, “あいうえお”など…

>>> str(3.1415)
'3.1415'

 


データを画面に出力する関数

printという関数を使うと、データの内容を画面に表示することができます。

今、下の黒い欄に例えば3.1415と打ち込んでエンターキーを押すと、3.1415と下に表示されます。
しかし、実はこれは特殊な環境で、本来、画面にデータの内容を表示するには、print関数を使う必要があります。

>>> print(3.1415)
3.1415

違いがわからないと思いますが、今後、今使っているWebブラウザから離れて、プログラムのファイルを作って実行する際には、print関数を使うことになります。

 

printの練習

いろいろなデータをprint関数の引数にして、実行してみましょう。
1、’abcd’、[‘あ’, ‘い’, ‘う’]など….

 


データにくっついている関数=メソッド

いろんなデータ型の専用の関数のことをメソッドといいます。

例えば、文字列型は自分専用の関数(メソッド)をたくさん持っています。
その一つが、文字列型は、自分自身を特定の文字列で区切る「split」というメソッドです。
splitメソッドは、引数の文字列で、自分自身を区切ります。

splitメソッドを使って、’Tokyo,Japan’という文字列に、addressという変数名を付けて、”,”(コンマ)で区切ってみます。みなさんも黒い欄で試してみて下さい。

>>> address = 'Tokyo,Japan'
>>> address.split(',')
['Tokyo', 'Japan']

こんな風に、メソッドを使うときは、以下のよううに、変数名や定数名につづけて、”.”(ドット)をうち、次に変数名とカッコを入力します。引数はない場合もあります。

>>> 変数名.メソッド名(引数)

例えば文字列型には、小文字を大文字にするupperというメソッドがあります。
upperメソッドは引数がありません。
upperメソッドを使ってみます。

>>> address.upper()  
'TOKYO, JAPAN'

 

メソッドの練習

好きな文字列を作って、split, upperのメソッドを実行してみてください。

>>> 'ごろはろん'.split('ろ')
['ご', 'は', 'ん']
>>> a = 'macbookpro'
>>> a.upper()
'MACBOOKPRO'

次は、データの入れ物についてもっと詳しくやります。


大学ではじめてPythonやプログラミングを勉強する人へ

大学ではじめてPythonやプログラミングを勉強する人へ

本サイトは、大学や高校などではじめてプログラミングを習う人を意識した内容にしています。

その中でも近ごろは一番最初に勉強するプログラミング言語がPythonという場合が多いようなので、Pythonの学習コンテンツを用意しました。

本サイトを見てほしい人

Pythonは文法が比較的かんたんで、他の人の書いたコードも読みやすいプログラミング言語なので、一番最初に習う言語として選ばれやすいです。

それでも、なかなかすんなりと頭に入ってこない人も多いと思います。

  • 他のサイトや教科書でPythonを勉強しているが、よくわからない
  • もともとプログラミングやITが好きというわけでもない
  • 数学が苦手
  • 高校では文系のクラス

これらに当てはまる人にとって役立つサイトを目指しています。


このサイトのPython入門記事のリストです。

第1回 Python Hello World

まずはここから始めてください。

第2回 Pythonでできること

Pythonを勉強して何ができるのか、何に役立つのか、について解説しています。

ここより下は、具体的な文法や書き方についての入門記事です。特に必要な部分を見ていってください。

第3回 簡単な計算をしてみよう

第4回 変数に値を代入する方法

第5回 変数の型について

第6回 比較する演算子


Pythonの問題集

少しずつですが、Pythonの文法の基本についての練習問題を用意しました。
回答例と解説つきです。
簡単にですが、正誤判定もついています。
現在は、学習を始めたてくらいの人向けの簡単な問題ばかりです。

こちらからどうぞ。
Python問題集


Pythonを学べる大学一覧

まだ全然集まっていませんが、Pythonをこれから学びたいという人のために、Pythonの授業や演習のある学校の一覧をつくり始めました。
興味のある方はごらんください。
pythonを学べる大学一覧2018


オススメのテキスト

Pythonの基本が、問題形式になった入門書です。

Python入門の本としては、欄外にある「みんなのPython」等も良い本ですが、
問題になっているというのはこれしかない気がします。

大学や専門学校でPythonを学習する場合、練習問題を問いたり、テストで問題形式で出題されたりすることがあるので、
そんな時に手元にあると勉強しやすいと思います。

また、実は内容はかなりオーソドックスなPython入門になっており、しっかり学習できます。


これらのコンテンツがお役に立てば幸いです。

 

比較する演算子| Python独学ならTech-Joho(6)

Python独学ならTech-Joho TOP > Python入門カリキュラム > 比較する演算子

Pythonで数値を比べてみよう

Pythonでは、2つの数値が等しいか、それとも大小に差があるのかを、比べることができます。

下の黒い欄で、実際にPythonコードを実行してみよう。

黒い欄の使い方はこちら

比較演算子

2つの数値を比べるには、比較演算子と言うものを使います。

その一覧がこちらです。

 比較演算子 数学記号
 <
 <=  ≦
 >  >
 >=  ≧
 !=  ≠
 ==  =

左の列がPythonで使う比較の演算子、右の列に書いてあるのは、その数学で言うところの意味です。

ある数値が他の数値より大きいか、小さいか、またはそれ以上か、それ以下か、という大小の比較には、>や=を使います。

また、等しいか、等しくないか、という比較には、!や=を使います。

使ってみる

例えば、下の黒い欄に7==1と入力してみて下さい。

7==1は7が1と等しいですか?という比較です。

7は、1とは等しくないので、Falseという値が表示されたはずです。

7==1の例

このように、比較してみて、その結果が正しくないと、Bool型のFalse(偽)が返ってきます。

もう一つ試してみましょう。7 >=  1と入力してみて下さい。

7>=1の例

7 >= 1は、7は1以上ですか?という比較です。そして、7は1以上の数値です。

このように、比較の結果が正しいときはBool型のTrue(真)が返ってきます。

Bool型や真偽値について忘れた人、分からない人はこちらで復習してください。

 

全部の例をそれぞれ使ってみた例です。皆さんも、下の黒い欄で試してみてください。このように、変数に代入した値を比較することもできます。

変数に代入した数値の比較の例

 

Python特有の比較演算

演算子

Pythonの比較演算では、同じ数値を複数の数値と比較するとき、同じ数値をたくさん書く必要がありません。

https://docs.python.org/ja/3/reference/expressions.html#comparisons

また a < b < c が数学で伝統的に用いられているのと同じ解釈になる

具体例を見たほうが分かりやすいと思います。

変数aが10未満で5より大きいことを確かめるのに、他のほとんどの言語と同じようにPythonでも、下のように書くことができます。

>>> 10 > a and a > 5 

Pythonでは、それだけでなく、このように書いても同じ意味なります。

>>> 10 > a > 5 

数学で一般的に書く不等式のように、aを共通にしてもよいということです。

文字列の比較

Pythonでは、数値同士だけでなく、文字列同士も比較できます。

黒い欄で下のコードを実行してください。

>>> 'a' < 'b'

Falseが返ってきました。
また、逆を実行するとTrueが返ってきます。
どうやら、abc順に比較結果が返ってくるようです。

'a' > 'b' in python

日本語や複数文字ではどうでしょうか?

黒い欄で下のコードを実行してください。

>>> 'あいうえお' > 'あいうえか'

逆も実行してみてください。
日本語でもあいうえお順に、また、複数文字の場合も考慮して比較してくれます。

あいうえお比較

正確には、文字列のUnicode コードポイントをみているようです。

参考

Pythonの文字列の比較演算子について
https://qiita.com/ninomiyt/items/bd3e1e441b6b79328de7

Python公式ドキュメント Comparison
https://docs.python.org/3/reference/expressions.html#comparisons

 

比較演算子については以上です。

次は、関数という便利な道具の使い方です。

 


<< 前へ 第5回 変数の型について

>> 次へ 第7回 関数という道具


変数の型について | Python独学ならTech-Joho(5)

Python独学ならTech-Joho TOP > Python入門カリキュラム > 変数の型について

変数の型について

Pythonプログラミングで利用する変数の型とは何なのか、解説しています。

下の黒い欄にPythonコードを打ち込み、実際に実行しながら学んでみよう。

黒い欄の使い方はこちら

型とは

Pythonのデータには、種類があります。

1や100といった整数のデータと、、”abc”といった文字列のデータの種類が違うことは、なんとなく理解できるのではないでしょうか?

こうしたデータの種類のことをデータの型とか、データ型と言います。また、クラスという言い方もあります。これらの違いについては後々とりあげます。

型の例

よく利用する型の例を解説します。

例に書いてあるデータを、実際に下の黒い欄に打ち込んでみて下さい。

整数

小数点が含まれない数字です。int型といいます。イントと読みます。英語のInteger(整数という意味)の略です。

書くときは、数字をそのまま書きます。

>>> -1
-1
>>> 0
0
>>> 256
256

文字列

文字を表現するための型です。str型といいます。スター、ストリング、エステイーアール、などと読みます。英語のString(文字列という意味)の略です。

注意が必要なのは、数字も、””で囲んで入力すると文字列になるということです。
この場合、数字としての意味はなく、計算に使うことができません。

書くときは、引用符(’または”)で囲んで書きます。

>>> "Tokyo"
"Tokyo"
>>> "東京"
"東京"
>>> "123"
"123"
>>> "3.14145"
"3.14145"

小数

小数点を含む数字を表す型です。float型といいます。フロートとよみます。

この名前は、floating point number(日本語で浮動小数点数)の略で、小数を扱う仕組みから来ています。厳密には、小数を表す型はほかにもいろいろあります。これについてもあとあと解説します。

書くときは、小数点を付けて数字を書きます。

>>> -3.14
-3.14
>>> 0.005
0.005
>>> 1.0
1.0

真偽

正しいか間違っているかの2つの状態を表します。bool型といいます。ブールとよみます。

以下の2つの値しかありません。

>>> True
True
>>> False
False

リスト

複数のデータをひとまとめにして扱います。

書くときは、カンマ区切りに並べたデータを角括弧[ ]で囲みます。

>>> [1,2,3,4,5]
[1,2,3,4,5]
>>> ['Tokyo','Osaka','Takamatsu']
['Tokyo','Osaka','Takamatsu']

型は他にもいろいろあり、
実は、型を自分で作ることもできるのですが、詳しいことはまた別の記事で。
次に進んで下さい。