python 始めました

まだ何かを書いてはないけど、メタセコやblenderでも使えるみたいね
あとはクラウド系サーバーって言うのかでHP作るのとかにも使えるようです

まとめておかないと調べた事も使うときには忘れてるのでメモ書き
アフィリエイト目的のサイトがホント多くて、
そのつど探すと細切れ記事が多くて大変ってのもあるかも
あと明らかに間違ってるところも多いんだよな~ちょっとテキトーすぎる

このブログはセンター添えにしてるのでそこはちょっと不便かも
記事が左添えならエディタをディスプレイの右半分にして、見ながら書けるんだけどねぇ
まぁわたしはディスプレイ二枚なのでこれでもok

解釈が違うとかそもそも間違ってる部分があったら教えてくれると助かるかも

あと対象を決めてないので大雑把かも

基本は自分用メモなので実行までして確認してない部分多数です
実行して少しずつ直していくので一年ぐらいこの記事はアテになりません
あとあまり規則もなく羅列してるのでとても見にくい「Ctrl + f」で検索推奨

--------------------------------------------------------------------------------
print ***


コマンドプロンプトで実行したりする場合はこれで出力できるみたいです
基本なんでしょうが、まぁあまり使わないでしょう、たぶんね
pythonは最後にセミコロン ; いらないみたいですね

--------------------------------------------------------------------------------
はい、では文字列の書き方

文字列は ' や " で囲うことで認識されるようです

mojiretu = "文字列"

って感じでしょうか
複数行は ' や " をみっつ ''' とか """ で囲うと書けるみたい

hukusu = """
複数行に
なるらしい
"""


ということです

----------------------------------------
文字をつなげたい場合は

mojiA = "文字A"
mojiB = mojiA + "文字B"


って書くと 文字A文字B ってなるみたいです、さらに

mojiC = mojiA + mojiB

って足せば 文字A文字A文字B ってなるのだと思います

----------------------------------------
追加する場合は

mojiA = "文字列"
mojiA += "A"
mojiA += "B"


ってやると

mojiA の中身は 文字列AB になるみたいです

----------------------------------------
文字の置き換え、置換ですね

okikae = "文字列を置き換え"
okikae.replace("置き換え","置換")

とするとokikae は 文字列を置換 になる、たぶん

----------------------------------------
文字の切り離し
ホントはこれ書く前に配列やったほうが良い気がするけど文字関連なのでここで
いわゆる split スプリット とか呼ばれる奴ですね

bunkatu = "任意の文字で-分割"
bunkatu.split("-")

すいません、そのまま split でした、確認しながらメモしてるのがばれるなぁ

----------------------------------------
文字埋め、指定の桁数に揃えたりする様に

mojiume = "右添えになるね"
mojiume.rjust(20,"0")
mojiume.rjust(20,"x")

000000右添えになるね
xxxxxxx右添えになるね

多分こんな感じになると思う、たぶん、ついでに

mojiume.rjust(10,"0")
mojiume.rjust(10,"x")

右添えになるね
右添えになるね

たぶんこう、この手のは元の文字まで削らないはず
半角計算なのか全角考慮か調べたら追記します

----------------------------------------
次はゼロフィルのみの関数、エクセルとかでも良く使うよねゼロフィル

zerofill = "1234"

zerofill.zfill(10)
zerofill.zfill(3)

0000001234
1234

たぶんこう、ゼロフィルが文字列にも使えるのかは調べたら書き足します

----------------------------------------
冒頭チェック

boutou = "頭文字が一致するかチェック"

boutou.startswith("頭文字")
boutou.startswith("一致")

true
false

Starts With ってことかな、多分
Ends With は調べてから有無を追記します

----------------------------------------
任意文字列チェック
これは文字列中に含まれるかどうかのみ確認するっぽい

ninni = "任意の文字列"

"の" in ninni
"ぬ" in ninni

true
false

----------------------------------------
大文字小文字変換

big_small = "BigAndSmall"
big_small.upper()
big_small.lower()

BIGANDSMALL
bigandsmall

全角文字や数字混ぜてたらどうなるのかは不明
これも確認したら追記したい、覚えてたら

----------------------------------------
任意の文字列を削る、引数なしは半角スペースを削る、らしい

kezuru = "   kezuru rasii   "
kezuru.lstrip()
kezuru.lstrip(rasii)

kezuru rasii   」
   kezuru   

って感じ、スペースには背景色設定出来ないの始めて知った、「」はつかないよ
対になる rstrip というのもあるようです
頭にLとRが付いてるのでその通りなのでしょう
文字列長かったな

--------------------------------------------------------------------------------
次は数値、文字の前に書くか悩んだけどまぁどっちが先でもいいでしょう
まず基本的な記述

a = 500

これでaは500です "" とかでくくると文字ですが、ないので数字です
このaというのは if とか print とかには出来ないと思う、多分
そういうほかで既に使われてますよって言うリストがほしいな
あるかもしれないからあとで公式ドキュメント見てこよう

----------------------------------------
計算、基礎ですね算術演算子です

a + b
a - b
a * b
a / b

大体こんな感じです
多分 a * 2 も a/0.5 も同じ結果になる気がしますが状況に応じた方がいいのかもしれません
わたしは乗算ばっかり使いますけどね
さらっと 0.5 って書きましたが浮動小数点数が使えるかは不明です
使えない場合上の /0.5 は忘れてください、確認したら直します

----------------------------------------
算術演算子、a++とか++aは使えないようです(マイナスももちろんダメ)

a += 100
b -= 200

はokのようです、乗算とかは不明、出来そうだけどね

----------------------------------------
文字扱いを数値扱いに変換

a = "100"
int(a) +200

300

って感じらしいです、いわゆるキャストってやつですね
これはperlみたいにそのまま a + 200 でいけそうな気がしてたので意外です
多分出来ないのでしょう、多分ね
あれ?文字列のところで数値→文字のキャストってしましたっけ?
たぶん string(a) とか stirings(a) とかそんな感じだと思う、たぶん(大切な事なのでry

--------------------------------------------------------------------------------
次は日付の取得
「datetime」っていう便利ツールがあるみたいなので使いましょう
使い方は

import datetime

を頭の方につければいいみたいです、これで日時関連の準備はok
importっていうのはincludeみたいなもんなんでしょうね
datetimeというのを拡張していろいろ出来るようにしようって事だと思います

----------------------------------------
それぞれ取り込む値が少し変わるようです

today = datetime.date.today()
todaytime = datetime.datetime.today()

today年月日
todaytime年月日時間

today.year
today.month
today.day
todaytime.year
todaytime.month
todaytime.day
todaytime.hour
todaytime.minute
todaytime.second
todaytime.microsecond

後半書いてないけど名前の通りの物が取得できるみたいです
取得時に構造体のようなものになるのだと思います、加えて

today.isoformat()
todaytime.strftime("%Y/%m/%d %H:%M:%S")

が使えるらしいです、上のは用途不明ですが下のはそれなりに便利そうです
気になるのは自PCで実行するならいいですが
実行環境が外国にあったらどうなるかってことですね
pythonじゃないけどhotmail とか時間ずれて表示されますもんね
あれ .com アカウントだけなのかな、そこ考えたことないや

----------------------------------------
日付の計算
単純にログ取りだけならともかく何かと比較する場合は使うのでしょう、多分

today = datetime.datetime.today()
today + datetime.timedelta(days=1)明日の日付

直接入力
newdate = datetime.datetime(2010,1,1)2010年1月1日

newdate + datetime.timedelta(days=10)2010年1月11日

calc = today - newdate 2010年1月11日から明日までの日時
calc.days 明日までの日数(多分)

わかりにくいけどわたしにははわかるので日時はとりあえずココまで

--------------------------------------------------------------------------------
んー、配列、タプルと呼ばれるらしいです
先に書いておくとリストと言う配列があってそちらの方が一般的だと思います
タプルの特徴は初期値を入れたら変更できない、と言う事らしいです

a = (100,200,300)
a
a[0]
a[1]
a[2]

(100, 200, 300)
100
200
300

となるらしい、なんで出力が (100, 200, 300) なのか、使いにくくないのか
() や , それが入っても , の後の半角スペースはホントに入るのか
文字にキャストして別の変数に入れたらどうなるのか、は調べた方が良さそうですね

--------------------------------------------------------------------------------
ではリスト、配列です

a = [100,200,300]
a
a[0]
a[1]
a[2]

[100, 200, 300]
100
200
300

括弧が変わってますね、そもそもホントにつくのか謎です
調べたら直しますが参考サイトはざっと見ただけでも怪しいところがあったので
わたしはあんまり信用してはいないです、あくまで参考

----------------------------------------
値の追加、配列の追加と言う方が正しいのかな

a = '100', '200', '300'
a.append('400')
a.append('500')

['100', '200', '300', '400', '500']

Pythonでは特に何も指定せず配列の追加が行えるようです
こないだ C# さわって思いましたが「開放せずに新しい領域を確保出来るので
とても楽です、便利」って書いてあるサイトを見て(newの配列確保ね)
便利どころか不安しかないと思ってしまいました
だってどこに書き込まれてるかわかったもんじゃないでしょ
しかし C# も初めてさわったので大変でした、完遂してないで放置中だけど
時期が近いのでPythonと混じってしまいそうで怖いです

----------------------------------------
値の削除、配列の削除、要素の削除・・・要素の削除かな

a = ['100', '150', '200', '300']
a.remove('150')

['100', '200', '300']

参考サイトは最初の配列が 1 2 3 2 1
となってて 2 をremove して 1 3 2 1 にしてたのですが
それじゃ「2番目」が消えるのか「2」が消えるのかわからないよ
一応説明に最初に見つかった値だけと書いてありましたが
わたしはこのサイトの説明はこの項目の時点ですでに信用してなかったので
ん?って感じでした、そもそも↑の解釈で正しいのかもまだわかってないけどね

----------------------------------------
んーと次も要素の削除

a = ['100', '150', '200', '300']
a.pop(1)
a
a.pop()
a

150
['100', '200', '300']
300
['100', '200']

多分こう、popに渡す引数で配列のindex順(0~n)を指定
範囲外渡したらどうなるのかは不明
引数がない場合は末尾の要素が消されるみたい
消すときに何を消したかが参照できる、と言う感じ、多分

----------------------------------------
欲しい値を持つ要素のindex順を取得できる関数、その名もindex

a = ['100', '150', '200', '300', '200']
a.index('200')

2
配列の[0]から探して見つかった時点で終わりらしいです

----------------------------------------
欲しい値を持つ要素を数える

a = ['100', '150', '200', '300', '200']
a.count('200')

2
そのまんまですね、200が2個あったから2です
pythonはremoveとかindexとかcountとかそのまんまのが多くていいですね

--------------------------------------------------------------------------------
次は参考サイトにならってディクショナリ、と行きたいけど
なんかすごく怪しいのでちょっと飛ばします
--------------------------------------------------------------------------------
コメントアウト、これはすごい大切
基本的には # をつけるとそれ以降その行は無視されます

a = 6 # こんな感じで
# a = 5

とすると a = 6 になる、Perlと一緒なのね
注意しないといけないのは

# a = 7 って書いた場合

単純に # を取ると当然アウトです、これやる人たまにいるんだよなー、せめて
# a = 7 #って書いて欲しいです

複数行は

'''
'''
シングルクォーテーションや
"""
"""
ダブルクォーテーションで行えるそうです
というかこれは文字列のところで複数行文字列で使った奴ですね
つまりその間を全部文字列として扱う、と言う事みたいです
Pythonは文字列が浮いててもokだからってことみたいです
・・・これは使わないほうがいいですね、全部ちゃんと#でコメントアウトしましょう
こういう抜け道的なのはやらかす原因になる+特にこれはロスにもなるのでダメですね
そういえばPerlで複数行は見た覚えないな、なかったのかも

--------------------------------------------------------------------------------
エスケープシーケンス、って言うらしいです、ホントかどうかは知りません
参考にしてるのにほとんど信じてなくてごめんね

たとえば文字列

a = '123456'

これは出来ます

b = '123'456'

これは出来ません

しかし

c = '123\'456'

とすれば 123'456 の文字列を表現可能、と言う感じ、多分
単純に

d = "123'456"

でもいいので、こっちの方が早いと思うけどね、逆もまた然り、

\ってのは¥の半角の奴ね、バックスラッシュと呼ばれる奴です、 / じゃないよ
このブログはフォントの関係でちゃんと(?)バックスラッシュになってるけど
似て非なるものなので気をつけましょう

----------------------------------------
じゃあ文字列に \ 入れたいときはどうするのか

a = "123\\456"

これで 123\456 となるようです、簡単ですね

----------------------------------------
次は改行

a = "123\n456"

まぁ \n はよく使われるからねPythonでも使えても不思議じゃないですね

b = """
123
456
"""

と扱いが違ってくるのかどうなのか、って所は調べた方が良さそう

----------------------------------------
タブは \t です

a = "123\t456"

って感じ、うちのテキストエディタはこれですね、多分正規表現なのだけれど
ただテキストエディタだと改行は\h\rとかですね、確か、順序が正しいかは怪しいですけど

--------------------------------------------------------------------------------
やっと出てきました if文 まぁ、これはそのままですね

if a ==1:
    b = 1
elif a == 2:
    b = 2
else:
    b = 3

って感じだそうです : コロンで区切ります、ひとつだけ

if a ==1:
elif a == 2:
    b = 2
else:
    b = 3

と言う書き方はダメでそういうときは

if a ==1:
    pass
elif a == 2:
    b = 2
else:
    b = 3

と書くそうです、まぁ使わない if 入れなければ良いんですけどね
これはわたしには関係ない話でした

複数行の場合は
if a ==1:
    pass
elif a == 2:
    b = 2
    c = 1
    d = 3
else:
    b = 3

こんな感じでインデントを揃えるようです、タブは使わないほうがいいです
理由はどこかで書きます python の大嫌いな仕様です

それにしても
 else if(C言語とか)、 elseif(PHPとか)、 elsif(Perlとか)
は見たことがありましたが
ついに elif 来ましたか、pythonだけ使う稀有な人なんて・・・
モデラーならありえるのかな
全部else if で良いと思うんですけどね、わたしは初め elsif を知りましたが
はっきり言って略されてたせいで言葉としての意味はわかってなかったです

----------------------------------------
"比較"演算子
参考サイトは単に演算子ってあったけどダメでしょ
そういうキッチリしてないのみるとイライラする、っていうか意味違うからね

if a == b and c == d:
    e = 5
else if a == b or c == d:
    e = 6
else
    e = 7

たぶんこう、上のをそれっぽく訳すると
「もしAかつBならC、違う場合もしAまたはBならD、それ以外はE」
って感じ == 以外に != とかも使えるのかは今のところ不明、使えそうだけれど

--------------------------------------------------------------------------------
はい for文 です、これちょっと表記が新しくてわかりにくいです
んーと

 a = [10, 20, 30, 40, 50]
for b in a:
    print b

10
20
30
40
50

出力をprintとする場合は多くないと思うのであまり使いたくなかったのですが
今回はちょっと仕方ないですね、ということにしておこう
つまりこの場合は要素の数分ループして次々と中身を出力してる、
のだと思います、そしてココで参考ページは終わり
え? for文 で指定回数回すのとかやらないの?出来ないの?
とか思いますが書いてありません、いったいなんなの・・・
ってことで絶対必要になるので出来るのかできないのかどうやるのか
後で追記しないと、なんでこんなにテキトーなのか・・・

----------------------------------------
while文 です

while a < 10:
    a += 1

これで a が 1~10 まで回ります
あ、この書き方も出力タイミングを明確にしてないからわかりにくいな
まぁいいや、最後 a = 10 です、9や11ではありません

----------------------------------------
break 割と重要、う~ん重要だと思います

a = [0, 1, 2, 3, 4, 5, 6, 7]

for num in a:
    if num == 4:
    print num
        break

0
1
2
3
4

となるっぽいです、つまりそこで抜けれます多分 while文 でも使えるけど未確認
参考ページは a でなくて range(100) とか書いてあったけど
range(100) ってまだ前の項で出してないでしょ・・・なによこれ
多分0~順に吐き出すのだと思うけれど
そういう前で説明してないのを当たり前のようにぽんと出す教材にロクなのがない
ホントない、大学の教科書はそんなのばっかで辟易していたのを思い出しちゃった
教授もそんなのばっかだったけどね、聞けば答えてくれる分そっちはましよ

----------------------------------------
えーっと、continue
まぁbreakと似たようなものですね、こっちは切るんじゃないけど

a = [0, 1, 2, 3, 4, 5, 6, 7]

for num in a:
    if num % 3:
        continue
    print num

んー、参考ページの感じで書いたけどこの if の仕方は大嫌いです
3で割り切れる場合は下に続く、ということで出力は

0
3
6

なのだけれど、個人的に if ((num % 3) == 0) みたいな書き方じゃないと納得できません
この書き方がpythonで出来るのかは別としてね
言語によって0と1で真か偽か違ったりとかあった気がするし明確でないのはどうにもね
0以外の数値ならokとかもあった気がするしそこらへんも考慮して書いてほしい
あ、あと算術演算子に書いてなかったけど % ってのは余りを吐き出す算術演算子ね

なお参考ページには

カウンタ値が10で割り切れないものは、
print文を実行させずに次のループへ処理を継続させます。

と書いてありました
何が言いたいかはわかるけどcontinueの意味に則してないでしょう
こういうのホントに受け付けない体質なの、書いてて気持ち悪くないのかなぁ

----------------------------------------
えーっと、switch文はpythonに無し、どうせ使わないのでいいです

----------------------------------------
range 出た出た、なになに「for文とセットでよく使用される・・・」
だったら for文 で使っちゃう前に書きなよ・・・

for i in range(4):
    print i

0
1
2
3

引数を渡さないと「その数値までの値を吐き出す」

for i in range(2,4)
    print i

2
3

二つ渡すと前者から開始し後者までの数値を吐き出す、と言う事ですね

for i in range(-2,2)
    print i

-2
-1
0
1

ってことですね

今気づいたのは直しましたがprintfって書いてました
pythonはprintです、printfってあってもそれは嘘です
printfも使わないのにな~、なんでこんな間違いを・・・

----------------------------------------
print文、・・・書くようなことじゃないのでパス、どうせ使わないし

----------------------------------------
とりあえずこんなもんかな
例外処理とかに続くけどそこはどうでも良いや
使いたいときに調べよう
こういうのはツイッターに書いても意味ないからブログは便利

余りに奇抜な部分は特になかったのでとりあえず安心
ココまでは基礎だからこの先が大変だな~、そうかな~

暗号化とか拡張子の取得とか置換、乱数とかの方が先かな
後はファイル操作とメール送信も覚えないと

最初しかマーカーしてないテキトーっぷりが何とも

簡単なところだけ抑えてそろそろ息抜きにモデリングしたい



----------------------------------------
http://docs.python.jp/2/
公式のリファレンス見たけど
まぁ、わかるけど書き方が難しいね
基本的に自分で試してみないとわからない書き方なので
「これやるとこうなる」がぱっと知りたい人はネットで検索した方がいいかも
これやるとこうだよね?って人なら公式見てもわかると思う
というかその方がいいと思う、いや実際やるほうがいいかも
そんな感じの書き方だったね

----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------