problem1

今まで、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のような言語とは何かが根本的に違ってる気がする

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください