入門しない程度にさわってみる、ゆるふわPython講座
目次
こんにちは。松浦です。
この前美容院で「プログラマやってます。主にJavaで」って話したら、美容師さんから「JavaとPythonってどう違うんですか?」って返ってきてひええ……ってなりました。
こんな場所に伏兵がいたとは……油断しておった……。
ということで、今回は思わぬところで突然Pythonについて聞かれても、ギリギリ耐えられる程度にPythonについてお勉強していこうと思います。
ギリギリというのがポイントです。
つまり最低限の労力で済ませようとしている。
Pythonってどんな言語?
- Pythonと書いてパイソンと読む
- コードはシンプルで少ない行数で書けるように設計されている
- インデントが強制
- 機械学習のライブラリが充実していて、IoTのお勉強会でよく出てくる
- 数値計算も得意なのでビックデータもいける
- バージョン2と3でコードの書き方が異なり、互換性がない
- キャラクターはニシキヘビらしい(python キャラクターで検索したらリアルな蛇の写真しか出てこなかったので深追いはしない)
今流行りのIoTで大活躍。
これはどこで鉢合わせしてしまうかわかりません。
Pythonでビックデータについては井上さんの実用的でしっかりした記事がありますので、大志をお持ちの方はぜひそちらもご覧ください。
ビッグデータを使って統計分析がしたい! 【準備編】
今回はPythonのver.2系と3系でコードの書き方をちょっとだけ……
- コメント、変数、出力
- if文
- For文
基本の「き」ですが、これくらいわかれば、「Pythonって何?」→「どんな言語?」→「2と3で違うんだ。で、どう違うの?」の3回までは質問に耐えきれるのでわかる人のフリができるはずです。
今回もGo言語を知ったかしようとした時と同じように、環境構築をさぼってオンライン実行環境のpaiza.IOを使います。
Python2、3どちらで実行するか選べます。すごい。
環境作りから始めたいんだよ! という志の高い方は井上さんの記事で丁寧に説明されているので、やはりそちらをご覧ください。
環境作ったらもう入門してしまうので。
知ったかではなく知っている人になってしまうので。
コメント、変数、出力
Python2系
# coding: utf-8 #Python2の場合 #数値 testNum = 100 print 'testNumの型:' print type(testNum) #文字列 testStr = 'ゆきみ' print 'testStrの型:' print type(testStr) testUStr = u'だいふく' print 'testUStrの型:' print type(testUStr)
実行結果:
Python3系
# coding: utf-8 #Python3の場合 #数値 testNum = 100 print ('testNumの型:') print (type(testNum)) #文字列 testStr = 'ゆきみ' print ('testStrの型:') print (type(testStr)) testUStr = u'だいふく' print ('testUStrの型:') print (type(testUStr))
実行結果:
- コメント(2・3共通)
- 行頭に「#」
- 変数の代入(2・3共通)
- 変数名 = 値
- 出力(2系)
- print 値
- 出力(3系)
- print (値)
書き方が違うのは出力ですが、出力結果の違い、気づきましたっ?
2系は文字列の頭に「u」を付けると型がunicode、なければstrになりましたが、3系はuがついていてもstrとなっています。
2系には文字列の型が2種類存在していましたが、3系ではunicodeのみとなったため、strで出力されていても中身はどちらもunicodeらしいです。
文字コードはわりと話題に出やすいので、これでまた防御力が増しました。
IF文
Python2系
# coding: utf-8 #Python2の場合 checkNum = 5 if checkNum < 10: print 'checkNumは10より小さい' checkNum2 = 100 if checkNum2 < 10: print 'checkNum2は10より小さい' else: print 'checkNum2は100より大きい'
実行結果:
Python3系
# coding: utf-8 #Python3の場合 checkNum = 5 if checkNum < 10: print ('checkNumは10より小さい') checkNum2 = 100 if checkNum2 < 10: print ('checkNum2は10より小さい') else: print ('checkNum2は100より大きい')
実行結果:
- IF文(2・3共通)
- if 条件式:
trueの場合の処理
else:
falseの場合の処理
これはどちらも同じ書き方でした。
Pythonの場合、どこまでIF文の処理かというのを{}や()でなく、インデントで表現となります。
なので、だれが書いても見た目が同じコードになりそうですね。
For文
Python2系
# coding: utf-8 #Python2の場合 print 'リストの要素の分まわす' list = ['牛', 'カ', 'ル', 'ビ'] for i in list: print i print '指定した回数まわす' for j in range(3): print j
実行結果:
Python3系
# coding: utf-8 #Python3の場合 print ('リストの要素の分まわす') list = ['牛', 'カ', 'ル', 'ビ'] for i in list: print (i) print ('指定した回数まわす') for j in range(3): print (j)
実行結果:
- For文(2・3共通)
- for 変数 in ループするオブジェクト:
処理
リストの要素の数だけループ、という処理が基本のようです。
回数でループしたい場合はrangeで出来ます。
これも2、3系で違いがありませんでした……。
まとめ
2、3系でもっと大きく違うのかな、と思っていましたがちょっと触れた程度ではそんなに違いが見つかりませんでした。
違いを聞かれたらとりあえず「例えば文字の型とか、小さいことだけど出力がちょっと違うかな……あとは何がやりたいかじゃない?」で乗り切ろうと思います。
これくらいわかればまたどこかで突然「Pythonってどうなの?」って聞かれても致命傷にはなりません。
安心して街を歩けるようになりました。お疲れ様です。