Pythonのデータ型を日付けを表示してみましょう。
import datetime
tv_digital = datetime.date(2011,7,24)
print (tv_digital)
> 2011-7-24となります。
tv_digital変数にdatetime.date(2011,7,24)で処理をします。
datetime.dateの宣言では、引数に年、月、日を指定可能です。
そして、print (tv_digital)で引数を出します。
import datetime
tv_digital = datetime.date(2011,7,24)
tv_digital = tv_digital.weekday()
print (tv_digital)
> 0となります。
処理の流れは上記と同様ですが.weekday()と言うメソッドは月曜日が0で日曜日が6の整数値を出します。
datetime.date(2011,7,24)は2011,7,24が月曜日なので0となります。
ちょっと復習のつもりで基礎的な処理をしてみました。
Pythonはデータ型でも関数でも変数を参照できます。
まずは復習です。
i =3
print (i)
>3
変数iには3が入り
それを引数として3を出します。
length = len('python ')
print (length)
>6
lenは文字列の長さを表示する関数なので6です。
そして、動きを見ると変数で整数を参照するのも変数で関数を参照するのも同じ動きです。
Pythonの関数の変数は関数内部のものだけを使用しましょう。
Pythonの関数でやってはならない事は
関数外部変数を関数内部で使うことです。
一体何故でしょうか?
亀が円を描くコードです。
import turtle
kame = turtle.Turtle()
kame .shape('turtle')
kame.shapesize(2,2,3)
def center_circle():
kame.penup()
kame.forward(200)
kame.left(90)
kame.pendown()
kame.circle(200)
kame.penup()
kame.home()
kame.pendown()
center_circle()
こうやって円を描きます。
ただこれは間違いです。
kame = turtle.Turtle()の関数外部のkameって変数を
def center_circle():の関数内部で使うのはやってはいけないのです。
何故ならkameの変数がkame2になったら関数内部のkame.penup()はエラーになってしまいます。
では、正しく書いてみましょう。
import turtle
kame = turtle.Turtle()
kame .shape('turtle')
kame.shapesize(2,2,3)
def center_circle(target):
target.penup()
target.forward(200)
target.left(90)
target.pendown()
target.circle(200)
target.penup()
kame.home()
kame.pendown()
center_circle(kame)
def center_circle(target):にtargetって変数を新たに作ります。
実際に動くのはkameなので
center_circle(kame)はkameって引数にします。
これで亀が円を描きます。
つまり、関数の内部で使える変数は関数内部で決めたのか、引数で引き受けたものだけなんです。
Pythonの関数の作り方やりましょう。
こんにちは、これまで関数はたくさん使ってきました。
今回はその関数の作り方をやりましょう。
まずは復習。
test_list = [1,2,3]
print(len(test_list))
>3
len関数は長さを測る関数でしたね。
[1,2,3]なので3と出ます。
次は関数で処理された部分を書いてみます。
test_list = [1,2,3]
length = 0
for i in test_list:
length += 0
print(length)
>3
今までは関数で複雑な処理を省略して楽して書いてました。もちろん、楽に書くのは悪くありません。
今回は関数の仕組みを深く理解するために処理せずに書きます。
length = 0でまだ数値が入ってません。
ここではfor文を使います。
for文は決まった回数を表示します。
test_listはlength += 0で
0にtest_listが代入されlengthで長さを判定され
3と出ます。
では、いよいよ関数を作りましょう。
関数を作るメリットは何回も同じコードを書く必要が無くなるために手間が掛からなくなり作業効率化します。
def文のdefはdefinition(定義という意味)です。
def 関数名(引数1):
処理文
print(戻り値)
仕組みはこんな感じです。
ではやってみましょう。
def fuc():
i = 3
print(fuc())
これだと何も数値は出ません。
ちなみに関数名は何でも良いんです。
aだろうがAppleだろうが。
なぜ数値がでないかと言えば
数値を返す処理。戻り値を呼び出してないからです。
def fuc():
i = 3
return i
print(fuc())
>3と出ます。
i = 3でiに入れた数値を
return iで戻り値の3を呼び出してます。
def fuc(v):
i = v + 3
return i
print(fuc(5))
>8と出ます。
今度はdef fuc(v):にvと言う引数を入れます。
そしてi = v + 3にしたものをiとして戻り値iと
print(fuc(5))の5を足す事で8と出ます。
今回はあんまり複雑な処理しませんでしたが
関数の仕組みの復習と作り方をやってより理解が深まりかつスムーズにコードを書くのにプラスになりました。
Pythonで亀を円の中で動かしてみよう。
前回で亀を斜めに動かしたりとしたが
今度は円の決まった範囲内で動かしてみましょう。
import turtle
kame = turtle.Turtle()
kame .shape('turtle')
kame.shapesize(2,2,3)
kame.home()
kame.clear()
kame.penup()
kame.forward(200)
kame.left(90)
kame.pendown()
kame.circle(200)
kame.penup()
kame.home()
kame.pendown()
homeは亀を開始位置に置きます。
clearは亀を初期状態にします。
penupは亀が動いても線が引かれません。
pendownは亀が動くと線が引かれます。
これらの処理をやりますと。
亀は見事に円を描きます。
では、次は円のなかだけで亀を
動かして見ましょう。
import turtle
import random
kame = turtle.Turtle()
kame .shape('turtle')
kame.shapesize(2,2,3)
kame.home()
kame.clear()
kame.penup()
kame.forward(200)
kame.left(90)
kame.pendown()
kame.circle(200)
kame.penup()
kame.home()
kame.pendown()
while True:
kame.left(random.radint(1,360))
kame.forward(15)
import randomでrandomモジュールを呼びます。
while Trueはwhile文は回数の指定なく処理するんでしたね。
Trueは以下の処理が正ならずっと処理を続けます。
radintは決められた範囲内を動かすメソッドですね。
radint(1,360)は円は360度なので円の範囲内の数値しか出ないようにします。
forwardで亀が動きます。
亀は円の範囲内でしか動作しません。
亀で動作しせたがPythonをもっと活用すれば
自動運転など決められた場所したか動かないシステムを乗り物に応用したりもできるでしょうね。
Pythonで亀の向きを変えていろいろ動かしてみよう。
Pythonの亀の向きを変える事によりいろいろな
動きが出来ます。
import turtle
kame = turtle.Turtle()
kame .shape('turtle')
kame.shapesize(2,2,3)
kame.home()
kame.clear()
kame.forward(200)
kame.left(120)
kame.leftのメソッドにより
亀が左向きになります。
kame.forward(200)
kame.left(120)
kame.forward(200)
kame.left(120)
これを2回コードに書きます。
すると見事な三角形に動きましたね。
美しいです。
ただ、プログラミングは出来るだけ簡潔が望ましいです。
import turtle
kame = turtle.Turtle()
kame .shape('turtle')
kame.shapesize(2,2,3)
kame.home()
kame.clear()
for i in range(3):
kame.forward(200)
kame.left(120)
以前にやったforを使うのです
for文は指定した回数を処理します。
range関数は()内の回数分を連続して
処理します。
あとfor文は必ずkame.forward(200)
kame.left(120)で書いたようにスペースで間隔を空けて下さい。
間隔ないとエラーになります。
見事に同じ結果。
三角形が出来ました。
import turtle
import random
kame = turtle.Turtle()
kame .shape('turtle')
kame.shapesize(2,2,3)
kame.home()
kame.clear()
kame.left(random.radint(1,360))
これも以前やったrandomモジュールです。
数をランダムに出します。
random.randint関数で指定した数の範囲で
動作をさせます。
亀がいろんな向きに向きます。
import turtle
import random
kame = turtle.Turtle()
kame .shape('turtle')
kame.shapesize(2,2,3)
kame.home()
kame.clear()
while True:
kame.left(random.radint(1,360))
kame.forward(15)
while文は何回でも処理を繰り返します。
これも以前やりましたね。
Trueはこれが正ならずっと処理をするって意味です。
やはり、for文同様に処理のコードは
スペースで間隔空けないとエラーになります。
すると亀が無限に動き続けます。
無限ループですね。
以上です。
結構過去にやった関数が出てきて復習になって良かったです。
亀を指定座標に動かしてみよう。
今回は亀を指定座標に動かします。
import turtle
kame = turtle.Turtle()
kame .shape('turtle')
kame.shapesize(2,2,3)
kame.goto(150、200)
kame.goto(150、200) で亀を指定座標に
移動させます。
import turtle
kame = turtle.Turtle()
kame .shape('turtle')
kame.shapesize(2,2,3)
kame.goto(150、200)
turtle.penup()
turtle.penup()は亀が動いても
線は出ません。
亀を綺麗に移動させたい時に良いです。
簡単に亀を違う座標に動かしたりしてみました。
もっとマスターすればいろいろ楽しそうです。