problem1
2008/04/09
今まで、pythonにはあまり魅力を感じてなくて*1、本も1冊買ったけど、眺めただけで放ってあります。
しかし、GoogleApps というサービスが始まったりして、pythonを知っておきたいという思いが出てきました。
あと、仕事で急にpythonをやることがあった時に困らないように(あるのか?)
id:pgf2さんが、Project Eulerという問題集の問題を問いているのを見て、今の自分の環境の場合pythonで解きながらpythonを覚えれば丁度いいんじゃないかと思いました。
英語弱者なので、日本語訳を見付けてきた。
http://odz.sakura.ne.jp/projecteuler/index.php?Project%20Euler
まずは、Problem 1から。
#! /usr/bin/python# -*- coding: cp932 -*- '''10未満の自然数のうち、3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり、これらの合計は 23 になる。 同じようにして、1,000 未満の 3 か 5 の倍数になっている数字の合計を求めよ。 ''' answer = sum(filter(lambda (x): x % 3 == 0 or x % 5 == 0, range(1000)))print answer
思った事など
- codingを指定しないと日本語を表示できないらしい。
- 複数行コメント用の文法が無いので、影響を与えない単一の文字列リテラルを複数行コメントの代りとして使うらしい。
- いきなり、変数に代入すればいいみたい。my とか local とか var みたいな宣言文はないみたい。スコープとかどうなってるのかな?
- 論理積と論理和は、 and or
- lambdaには、1文しか書けない。使う側から見ると奇妙な制限だと感じる。
- range(1000)は、0から999に展開される。
- 意外と欲しい関数が、欲しい仕様で欲しいところに(関数の名前的な意味で)で、ちゃんとあると感じた(filter関数とか)。この辺がpythonの良さなのかな?
続くかも
*1:perlとかCommonLispのような言語とは何かが根本的に違ってる気がする