Pythonをいじってみた

ここ最近JavaとCの勉強に行き詰ってプログラミング勉強への意欲が失われてしまったように思っていた。昨日も何かとややこしくて冗長なプログラムを読んでいても楽しさはあまり感じなかった。そこで気分転換に何か新しい言語いじってみようと思って、ちょうど前にインストールしておいたPythonをいじってみた。


その結果・・・、Pythonはすごく(・∀・)イイ! 何がいいというと
1.JavaやCにはなかった対話モードはすぐにプログラムの結果が見えて楽しい。またJavaやCだとプログラムを全部書いた後コンパイルするけど、対話モードだと文の一かたまりごとにエラーをチェックしてくれるからバグを探す手間が省ける。

2.1+1とタイプすればちゃんと2が出力されるし、x="Hello" y=" World!"としてx+yをタイプすれば'Hello World!'が出力されるところが簡単でイイ。

3.データ型の扱いが簡単なところ。今知ってる限りではだけど、intとかcharとかfloatを宣言する必要が余りないように思う。割り算も整数型同士の計算5/2なら2を返し、float型の数値を含めた計算5.0/2 or 5/2.0 or 5.0/2.0なら2.5を返すというように、型を細かく宣言しなくていい。

4.{}記号がないこと。変わりに空白(インデント)を用いて文を構成する。他の言語に比べて個性的な文に見えるけど、結構読みやすい。


以上が素人目&今日初めてPythonをいじった程度の知識範囲で思いついたPythonのいいところ。なかでも一番いいと思ったのは対話モードかな。Googleの研究者ピーター・ノーヴィグもこう言っている(下の引用文の「シンプルに・・・」の文は対話モードと直接関係ないけど、Javaでくじけそうになってる自分としてはPythonへ興味を移す良いいいわけになる^^からついでに載せておいた)

シンプルに保つ。C++Java といったプログラム言語は、コードの実行時の効率を気にする経験を積んだプログラマの大集団が専門的な開発を行うよう設計されている。その結果、これらの言語には、そうした環境向けの複雑な部分がある。あなたはプログラムを学ぶことに関心があるのであって、そうした複雑さは必要ない。一人の新米プログラマが学び覚えるのがやさしいように設計された言語が欲しいわけだ。
動かす。あなたはどちらの方法でピアノ演奏を学ぶだろうか。鍵盤を叩けばすぐにその音が聞こえる当たり前の対話的なやり方か、それとも曲をまるごと弾き終えた後でないとその音が聞こえない「バッチ」モードだろうか? 明らかに対話モードのほうがピアノを楽に学べるし、プログラミングも同じである。対話モードを持つ言語にこだわり、それを使うこと。


http://www.yamdas.org/column/technique/21-daysj.html


というわけでここしばらくはPythonを勉強していこうと思う。今日はいい発見をしたぜ。


んで、今日書いたプログラムは↓。関数宣言が簡単にできてすぐ使えることに感動して、関数を利用したプログラムばかりだけど・・・。


まずは練習に1行分のスペースを空けるプログラム

>>> def newLine():
	print

>>> newLine() //プログラムの実行
       //一行分のスペース
>>>

任意の行のスペースを空ける

>>> def newLines(x):
	for x in range(0,x):
		newLine()

>>> newLines(3) //実行
        //3行分のスペース


>>>

次は指定した回数、入力した文字列を表示するプログラム

>>> def printNtimes(n,x):
	for n in range(0,n):
		print x

>>> printNtimes(3,"Hello") //実行
Hello
Hello
Hello
>>> printNtimes(5,"こんにちは")
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは

最後は階乗のプログラム

>>> def kaijou(n):
	if n==1 or n==0:
		print 1
	else:
		x = n*(n-1)
		for i in range(2,n-1):
			x = x*(n-i)
		print x


>>>kaijou(0) //0の階乗: 0! = 1
1
>>>kaijou(3) //3の階乗: 3! = 321
6
>>>kaijou(5) //5の階乗: 5! = 54321
120


最後の階乗は、繰り返し文がJavaやCと違うからちょっとてこづったけど何とか書けた。繰り返しはCやJavaの文法の方が分かりやすいと思う。それとiに1を足していくi++や++iがPythonでは使えないみたい。


んでは今日はここまでかな。明日も特に用事もないし、明日もPythonを勉強するつもり。


※追記:WikipediaPythonの項に再帰呼び出しを使ったもっと上手な階乗プログラムが載ってた

>>> def factorial(x):
	if x == 0:
		return 1
	else:
		return x * factorial(x-1)

	
>>> factorial(3)
6
>>> factorial(5)
120


関連リンク:
Python Japan User's Group: http://www.python.jp/
Wikipedia: http://ja.wikipedia.org/wiki/Python