プログラミング言語/Python
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*目次 [#va99e6f1]
#contents
#br
*どんな言語なの? [#l6f818a7]
Pythonの特徴として
-純粋オブジェクト指向スクリプト言語
-豊富なライブラリ
-欧米で人気
-無料エディターのIdleが付いてる
などが挙げられますが、プログラミングをやったことのない方...
それでは、Google、Microsoft、Yahoo!、Youtubeなどで使用さ...
Pythonは開発者がもともと教育用の言語(ABCといいます)に携...
ところがどっこい、超優れた標準ライブラリ・超超優れたサー...
なのでPython一つで何でも出来てしまうのだ。~
*やってみたい! でもどうすればいいの? [#l4c6ea27]
それではPythonをインストールしましょう。以下ではWindows X...
まずは[[Download Python:http://www.python.org/download/]]...
標準では「C:\PythonXX」にインストールされるはずです。
※現在3.xが在るが、初心者にはオススメしない。~
※理由は、サード(愛好者又は団体)のライブラリが殆ど対応して...
※和訳されたドキュメントも少なく、2.xに比べると、圧倒的に...
※初心者にはPython2.xとPython3.xの橋渡しであるバージョンの...
※下記の説明には、Python2.5が用いられていますが、Python2.x...
次に、Pythonをインストールしたフォルダへパスを通します。~
-マイコンピュータを右クリックし、プロパティを開きます
-「詳細設定」タブの下のほうにあるボタン「環境変数」をクリ...
-システム環境変数またはユーザー環境変数からPath(PATH、pa...
-もともとあった変数値の最後にセミコロン(;)がなければセ...
-「OK」を押して設定を保存します。
パスの設定が完了したら、パスが通っているか確認しましょう...
python -V
と入力してエンターを押してください。
Python X.X
と表示されれば成功です!(これは2.5だと --versionでもいけ...
環境変数の設定が怖い方はもともとの変数値をメモ帳にでも貼...
*インストールしたよ! パスも通したよ! [#k8151f1a]
**スクリプトファイルを作ろう! [#l84c6ef0]
それでは最初のスクリプトを記述しましょう!~
メモ帳を開き、
print 'Hello World!'
と記述してhello.pyと名前を付けて保存します。場所は「C:\My...
cd C:\MyPython
と入力してエンターを押してください。続いて、
python hello.py
と入力してエンターを押してください。
Hello World!
と出力されましたか? おめでとうございます! 初めてのプ...
**対話型シェルを使おう! [#g4b9c658]
Pythonにはちょっとしたテストや計算に便利な対話モードがあ...
python
とだけ入力して実行してください。対話型モードが起動し、
>>> _
というユーザの入力待ちの状態になります。
>>> 3+5
と入力してみましょう。キーを押すのは「3+5」だけです。
8
と表示されて、また
>>> _
という入力待ちの状態になりました。続いて
>>> x = 10
と入力しましょう。これは「xに10を入れる」という意味だと考...
今度は何も表示されずに入力待ちになりましたね。
>>> x
と入力しましょう。
10
と表示されました。xの中身が表示されたわけです。今度は
>>> x + 10
と入力してください。
20
と表示されました。ちゃんと、xの中身と10を足した答えが返っ...
対話型モードは
>>> exit()
と入力するか、Ctrl+Zを入力すると終了します。
**Idleを使いこなそう! [#uec25ae9]
PythonにはIdleという無料のエディタがついています。
スタートメニュー → プログラム → Python 2.5 → IDLE
を開いてください。コマンドプロンプトでpythonと打ったとき...
次にメニューボタンの「File」から「New Window」をクリック...
実際にプログラムを行う時にはこのメモ帳モドキにガリガリ書...
このメモ帳モドキにプログラムを書いてセーブしたら、メニュ...
セーブする時は拡張子を「.py」とすることに注意してください。
ためしに上に書いてある簡単なプログラムをIdleでやってみま...
**Idle使いづらいよ! [#x10113b9]
Idleがお気に召さない諸兄は統合開発環境(IDE)を使いましょ...
-PythonのIDE一覧
--[[PyScripter:http://python.matrix.jp/apps/pyscripter.ht...
--Eclipse + PyDev
--[[Geany:http://www.geany.org/]]
--[[xyzzy:http://www.jsdlab.co.jp/~kamei/]] + [[py-mode:h...
--[[Python Tools for Visual Studio:http://pytools.codeple...
--'''誰か補完頼みます…'''
*初歩でいいから教えて! [#c725d08b]
それでは、入門サイトや書籍が読める程度の知識を身につけて...
たくさんコードが出てきますが、
特に指示のない限りは対話型モードでもスクリプトファイルの...
実際に動かしながら覚えてください。
また、コツの一つとして、「よくわからなくてもとりあえず先...
そのときわからなくても、あとになると「なんだ。こういうこ...
初めてなんですから、最初はよくわからなくて当然です。
あとになって必要になったらもう一回詳しく調べてみれば良い...
せっかくプログラミングを始めたんですから、楽しまなきゃ損...
**画面に出力しよう! [#n2fed3d0]
Pythonには、もっとも手軽な出力としてprintがあります。
print 3
とだけ記入したスクリプトファイルを作成し、実行してみまし...
コマンドプロンプトに
3
が表示されます。3の部分を'Oh, I am printed.'に変えて実行...
Oh, I am printed.
と表示されます。続いて、対話型モードでも同様に入力して見...
同じく、3、Oh, Iam printed.と表示されましたね。
**コメントを入れよう! [#d016dd73]
プログラミング言語には独自の文法があります。
なるべく人間にもわかりやすいようになってはいますが、それ...
そんなときにはコードに''コメント''を入れることで理解しや...
Pythonでは、#の後ろからその行が終わるまでがコメントになり...
#Yes, I want to print 2, not 3.
print 2 # print 3
は、
2
とだけ表示されます。#の後ろはコメントなので、無視されるか...
***コードの表記について [#l1b813e3]
以降、コード例の中でコマンドプロンプトに出力するときはた...
そのとき、たとえば
print 3 + 7 #=>10
等とコメントが書いてある場合、=>の右側はprintを実行したと...
自分で試すときは、コメントは入力しないで結構です。
以降頻繁にこの表記が出てきますので、覚えておいてください。
**データを理解しよう! [#pc0790b4]
Pythonには基本的なデータとして、数と文字列があります。
どちらも言葉通りの意味です。
それぞれ見ていきましょう。
***数 [#d72c5cec]
数には整数や少数があります。複素数もありますが、ここでは...
print 3 #整数
print 3.14 #小数
足す引く掛ける割るはそれぞれ+-*/で計算できます。%は整数同...
print 3 + 7 #=>10
print 12 - 8 #=>4
print 4.6 * 5 #=>23.0
print 8 / 5 #=>1 整数同士の割り算は...
print 8 % 5 #=>3 8 ÷5 = 1 余り 3
print 8.0 / 5 #=>1.6 整数と小数だと結果...
print 7.5 / 2.5 #=>3.0
print 2**3 #=>8 2の3乗。2×2×2
***文字列 [#a8e1fd99]
''文字列''はその名の通り文字の連なりです。
文字をシングルクオート(')かダブルクオート(")で囲むと...
print 'Single Quote String' #=>Single Quote String
print "Double Quote String" #=>Double Quote String
です。文字列の中にシングルクオートを含めたい場合、ダブル...
print "I'm here!" #=>I'm here!
print '"Moe" is a deep thought...' #=>"Moe" is a deep th...
文字列にはほかに生の文字列や3重クオートの文字列があります...
特殊な文字として''エスケープシーケンス''というものがあり...
エスケープシーケンスは「\」に続く記号または英字で表現され、
主に画面に表示できない改行やタブなどを文字列に埋め込むた...
例えば、改行は「\n」、タブは「\t」で表します。
print 'Hello!\nHello!\nHello!'
で、
Hello!
Hello!
Hello!
と表示されます。他にもいろいろなエスケープシーケンスがあ...
文字列も足し算、掛け算ができます。
足し算は文字列の連結、掛け算は文字列の繰り返しになります。
print 'Hello ' + 'World!' #=>Hello World!
print 'Ooops!' * 3 #=>Ooops!Ooops!Ooops!
日本語もおそらく使用できるはずです。対話型モードの場合は...
print 'こんにちは世界!' #=>こんにちは世界!
です。スクリプトファイルで日本語を使用したい場合、utf-8を...
ファイルの先頭に
# -*- coding: utf-8 -*-
とコメントを書いておくと、Pythonはファイルがutf-8で書かれ...
もちろん、ファイルをutf-8形式で保存しておく必要があります。
さらに、日本語の文字列を使用するときは文字列の先頭にuをつ...
これは「この文字列はユニコードだよ」とPythonに指示するた...
このような文字列を'''ユニコード文字列'''と呼びます。
# -*- coding: utf-8 -*-
print u'こんにちは世界!'
print 'こんにちは世界!'
と記述したファイルをutf-8形式で保存し、実行してみましょう。
こんにちは世界!
縺薙s縺ォ縺。縺ッ荳也阜・
と表示されるはずです。uを忘れると不思議な文字列が出力され...
スクリプトファイルで日本語を使いたい場合、先頭のコメント...
**変数を理解しよう! [#l52d299f]
いままではデータをほぼそのまま表示しているだけでした。
しかし、計算した値をとっておいたり、ユーザからの入力を受...
この、なんらかの値を入れておくためのいれもののことを''変...
変数は名前をつけて、何かを入れることで勝手に作成されます。
変数に何かを入れることを''代入''と呼びます。代入の記号は...
x = 10
print x #=>10
確かにxに10が入っています。「=」はあくまで「右のものを左...
なので、
x = x + 10
print x #=>20
といった記述も可能です。数だけでなく、文字列を入れること...
x = 'Oh, I am in variable x.'
print x #=>Oh, I am in variable x.
print x + ' Yeah!' #=>Oh, I am in variable x....
変数には大抵のものが入れられます。もちろん、新しい変数を...
width = 10
height = 30
area = width * height
print area #=>300
では、まだ作っていない変数を出力しようとするとどうなるで...
print madanai
実行すると、以下のようなエラーが出ます。
NameError: name 'madanai' is not defined
そもそもまだ作られていない変数の中身を表示させようとして...
madanai = 'Variable "madanai" already exists.'
print madanai #=>Variab...
今度は表示できました。
**データ構造を使ってみよう! [#ube72689]
たくさんのデータをまとめて管理したい場合、変数だけでは難...
例えば、あなたが先生で100人分の生徒の成績を管理するソフト...
そのとき、100人分の成績を格納するために100個の変数を用意...
たくさんのデータをまとめて格納したいときのために、Python...
ここではリストと辞書というふたつのデータ構造を簡単に使っ...
***リスト [#ke666fe0]
''リスト''はもっとも基本的なデータ構造です。
たくさんのデータが並んでいるような構造をしています。
カンマ(,)区切りのデータを角括弧([])で囲むことでリスト...
x = [10, 5, 8, 6]
print x #=>[10, 5, 8, 6]
リストに入っているデータ一つ一つを'''要素'''といいます。
''インデックス''を使うことで、各要素を利用できます。
インデックスとは、「何番目の要素か」をあらわす整数です。...
print x[0] #=>10 xの0番目の要素は10
print x[3] #=>6 xの3番目の要素は6
x[2] = 7 xの2番目の要素を7に書き換える
print x[2] #=>7
print x #=>[10, 5, 7, 6]
''インデックスは0番目から始まる''ことに注意してください。
xには4つの要素がありますので、有効な正のインデックスは0か...
「正の」と言いましたが、負の数も使えます。
print x[-1] #=>6
print x[-4] #=>10
-1番目が最後の要素で、そこから-1ごとに前の要素を指します。
xには4つの要素がありますので、有効な負のインデックスは-1...
リストは変数同様、数だけでなく文字列やその他のものも入れ...
また、いろいろな要素を混ぜることもできます。
x = ['dog', 'cat', 'cow', 'pig', 'bird']
y = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] #リストの要素...
z = ['pen', ['book', 5], 3.2] #いろいろな要...
インデックスを使って表示したり代入したりしてみましょう。
print y[1] #=>[4, 5, 6]
print y[0][1] #=>2 yの0番目である[1, ...
print z[1] #=>['book', 5]
z[1] = 'bird'
print z[1] #=>bird
リストが持つ要素の数(リストの長さ)はlenで得られます。
lenはlengthの略です。
x = [0, 1, 2, 3]
print len(x) #=>4
インデックスが0から始まることから、あらゆるリストにおいて...
では、有効でないインデックスを指定するとどうなるのでしょ...
print x[10]
以下のようなエラーがでます。
IndexError: list index out of range
インデックスが範囲外だと怒られてしまいました。注意しまし...
空のリストを作成することもできます。
x = []
print x #=>[]
print len(x) #=>0
空なので長さは0になります。
空のリストなんて何の役に立つの?と思うかもしれませんが、...
***リストの便利な機能 [#ibdd06d6]
さて、今まではリスト内の要素を直接記述していました。
それでは変数をいくつも用意するのと、「記述の大変さ」と言...
リストには追加や削除のための機能が用意されています。
この節で学ぶ機能と、次項で学ぶ処理の流れを変える手段を組...
冒頭で述べた「たくさんのデータを処理する」という目的を達...
まず、追加や削除の機能を見ていきましょう。まずはリストを...
x = [1, 2, 3]
リストのappendメソッドを用いることでリストに要素を追加で...
突然「リストのappendメソッド」などと言われても意味がわか...
意味はおいておいて、やり方だけに注目してください。
x.append(4)
print x #=>[1, 2, 3, 4]
x.append('cat')
print x #=>[1, 2, 3, 4, 'cat']
このように、「リスト.append(追加したいデータ)」でデータを...
途中に追加したい場合はリストのinsertメソッドを利用します。
「リスト.insert(インデックス, 追加したいデータ)」でイン...
x = [0, 1, 2, 3]
x.insert(2, 1.5) #2番目に1.5を挿入
print x #=>[0, 1, 1.5, 2, 3]
2番目が1.5になり、今まで2番目だった2が3番目に、同様に以降...
削除する機能もあります。「del 要素」でその要素を削除でき...
del x[2]
print x #=>[0, 1, 2, 3]
xの2番目の要素にdelを適用した結果、先ほど挿入した1.5の要...
リストの非常に便利な機能として''スライス''があります。
インデックスの代わりに範囲を指定することで、リストの一部...
この機能をスライスと呼びます。
例を挙げましょう。
x = [0, 1, 2, 3, 4]
print x[1:4] #=>[1, 2, 3] 1番目から3番目まで
print x[0:len(x)] #=>[0, 1, 2, 3, 4] 0番目からlen(x)-...
print x[3:3] #=>[] 終わりが初めより...
print x #=>[0, 1, 2, 3, 4]
このように、「リスト[始めのインデックス, 終わりのインデッ...
リストのスライス特有の動作として、スライスへのリストの代...
単純に、スライスした部分が代入したリストで置き換わります。
言葉では伝わりにくいかもしれません。例を見てみましょう。
x[1:4] = [10, 20, 30] #[1, 2, 3]を[10, 20, 30]で置き換える
print x #=>[0, 10, 20, 30, 4]
x[4:4] = [1, 2, 3] #4番目の位置に[1, 2, 3]を挿入する
print x #=>[0, 10, 20, 30, 1, 2, 3, 4]
del x[1:4] #=>[10, 20, 30]を削除
print x #=>[0, 1, 2, 3, 4]
初めのうちはわかりにくいかもしれませんが、なれてくると非...
***辞書 [#jb343cbd]
''辞書''はキーと値の組を格納するためのデータ構造です。
例えば国語辞典には、単語とそれに対する説明がたくさんあり...
この場合、単語がキー、説明が値となります。
辞書はコロン(:)で組にしたキーと値のペアをカンマで区切り...
x = {'cat': 'nya-', 'dog': 'wan'}
作成した辞書はキーを指定すると値を返します。
print x['dog'] #=>wan
リストの場合有効な範囲外のインデックスを指定するとエラー...
辞書では、代入に限っては存在しないキーを指定しても大丈夫...
x['one'] = 1
print x['one'] #=>1
ですが、存在しないキーの値をいきなり取り出そうとすると怒...
print x['two']
を実行すると、
KeyError : 'two'
と表示されます。~
キーが存在するかどうか判定するのはdictクラスのメソッドのh...
>>> ham = {'hoge': 'piyo'}
>>> print ham.has_key('foo') # => False
また、以下のようにgetメソッドを使用すると、そのキーが存在...
>>> ham = {'hoge': 'piyo', 'foo': 'bar'}
>>> print ham.get('foo', None) # => bar
>>> print ham.get('baz', None) # => None
&br;
これまで見てきたように、辞書のキーにはたいていの場合文字...
値は変数に入れられるものならなんでも結構です。つまり、ほ...
空の辞書も作成できます。lenで長さを計ることもできます。
print x #=>{'one': 1, 'cat': 'nya-', 'dog': 'wan'}
print len(x) #=>3
x = {}
print len(x) #=>0
***まとめ [#sabebefa]
本項では二つのデータ構造を学びました。
とりあえず、データ構造を使えばデータをまとめて管理できる...
次項からは、これまでに学んだ変数やデータ構造をどう処理し...
**処理の流れを変えよう! [#db0a073a]
これまでの例ではコードはただ順番に実行されるのみでした。
前項の冒頭の「自分が先生だったら」の例を思い出してくださ...
あなたは100人の生徒の成績管理ソフトウェアを作成したいので...
このとき、生徒の成績の平均を求めたいとしましょう。
100人のデータは配列scoresに入っています。
total = scores[0] + scores[1] + scores[2] + ... + scores...
average = total / len(scores)
こんなふうにやっても求められることは求められますが、いく...
また、60点以上なら合格、80点以上なら優秀などというように...
これを実現することは、今まで学んだ知識だけでは難しそうで...
本項では、上記のような処理を実現する、''分岐''と''繰り返...
あわせて、''条件''についても簡単に学びます。
これらの機能をおぼえるとぐっとプログラムらしくなってきま...
***for文 [#pe47df35]
'''for'''文は前項で学んだリストや辞書などの中身に順にアク...
for 要素を入れる変数 in データ構造:
処理
という風に記述します。処理の前に''インデント(字下げ)''...
例えば、リストの各要素の合計を計算したい場合は以下のよう...
xs = [0, 1, 2, 3, 4]
total = 0
for x in xs:
total = total + x
print total #=>10
対話型シェルで実行する場合、
>>> for x in xs:
... total = total + x
...
>>> print total
という具合に、改行のみの行でfor文の終わりを指示します。
total = 0
for x in xs:
total = total + x
print total
と記述すると、print文がfor文の処理に含まれるため
0
1
3
6
10
と繰り返しごとの結果が表示されます。
このように、Pythonではインデントが非常に重要です。
辞書についても同様にfor文で順にアクセスできます(ただし、...
ただし、辞書の場合はキーに順次アクセスします。
pets = {"dog" : 5, "cat" : 2, "pig" : 4}
for pet_type in pets:
print "There are", pets[pet_type], pet_type + "s"
で、
There are 4 pigs
There are 5 dogs
There are 2 cats
と表示されます。pet_typeに入るのは各キーとなります。
また、辞書のkeysメソッドを使うことでキーに、valuesメソッ...
for pet_type in pets.keys():
print pet_type
for pet_count in pets.values():
print pet_count
for pet_type, pet_count in pets.items():
print pet_type, pet_count
を実行してみましょう。一番下のfor文で、要素を入れる変数が...
itemsメソッドはキーと値のペアを順に返すため、受け取る変数...
pig
dog
cat
4
5
2
pig 4
dog 5
cat 2
と表示されます。
値だけが欲しいときはvaluesメソッド、値とペアのセットが欲...
***if文 [#le9900d1]
''if''文は「もし〜だったら○○する」といった、条件による分...
if 条件:
処理
という風に記述します。
字下げは、タブでもスペースでもかまいません。さらに、if文...
といった処理をを実現する''else''文、「そうでなければ、〜...
例を挙げましょう。
x = 7
if x < 5:
print 'x < 5'
elif x < 10:
print '5 <= x < 10'
else:
print '10 <= x'
で、
5 <= x < 10
と表示されます。xに代入する数字をいろいろ変えてみましょう。
「<」は数学の記号と同じです。
他に、「>」「<=」「>=」「==」なども使えます。
「<=」は≦のことです。
「==」は等しいかどうかの比較を表します。
条件部分の式については次節でもう少し詳しく説明します。
ちょっとした応用として、与えられた年がうるう年かどうがを...
ある年が4で割れればその年はうるう年だというのは知っていま...
うるう年の計算はもう少し複雑で、100でも割れればうるう年で...
さらに、100で割れる年でも400で割れる年はうるう年です。
この条件をプログラムにして見ましょう。
year = 1984
if year % 400 == 0:
print year, 'is leap year.'
elif year % 100 == 0:
print year, 'is not leap year.'
elif year % 4 == 0:
print year, 'is leap year.'
else:
print year, 'is not leap year.'
判定の順番とelif文の使い方がポイントです。
yearに代入する数字をいろいろ変えてみましょう。
このうるう年を判定するプログラムは次節でもう少し簡単な形...
続いて、for文と組み合わせてみましょう。
xs = [4, 5, 7, 8, 3, 2, 6, 1, 9, 0]
ys = []
for x in xs:
if x < 5:
ys.append(x)
print ys #=>[4, 3, 2, 1, 0]
数値の入ったリストxsの要素のうち、5未満のものをysに加えま...
***条件 [#nfb70c2e]
ここで、条件部分に書く式について簡単に説明しておきましょ...
式はなんらかの値を返します。
例えば「3 + 5」という式は3と5を足した値である8が返ってき...
では、「==」や「<=」を使った条件式は、いったいなにを返す...
実は、条件式は式が成り立つ場合は''True''、成り立たない場...
x = 10 != 5 #xに10 != 5の返す値を代入
print x #=>True。10は5ではありません!
「!=」は「==」の逆で、異なるかどうかを判定します。
10はもちろん5ではありませんので、xにはTrueが代入されるの...
さて、続いて複雑な条件の書き方について説明しましょう。
''and''や''or''、''not''を使うことで、複数の条件式を組み...
andは左右の式がどちらもTrueのときにTrue、orは左右の式のど...
言葉だけではわかりにくいので例を示しましょう。
x = 20
10 <= x and x < 20 #=>False xは10以上20未満?
x = 15
10 <= x and x < 20 #=>True
x < 5 or 10 <= x #=>True xは5未満または10以上?
x = 8
x < 5 or 10 <= x #=>False
not (x < 5 or 10 <= x) #=>True xは5以上10未満?
最後の式では、orの計算を先に行うためにかっこで囲んであり...
if文の節で挙げたうるう年を求めるプログラムは、条件をうま...
結局、うるう年は「4で割り切れてかつ100で割り切れない年、...
year = 1984
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print year, 'is leap year.'
else:
print year, 'is not leap year.'
と表せます。
条件についてざっと学びました。かなり急ぎ足だったので分か...
はじめのうちは複雑な条件を書いたり読んだりするのは難しい...
気にせず先に進みましょう。
***while文 [#s963055b]
for文はデータ構造の中身に順番にアクセスするための構文でし...
それに対して''while''文は与えられた条件が成り立っている間...
while 条件:
処理
という風に記述します。
条件が成立すれば処理をしたあとまた条件のチェックに戻りま...
成立しなければ処理をせずにwhile文を終了します。
例として、1から5までの合計を求めるプログラムを書いてみま...
i = 1
sum = 0
while i <= 5: #iが5以下のあいだ
sum = sum + i
i = i + 1 #iを1増やす
print sum #=>15
print i #=>6
処理の最後にiの値を1増やしているのがポイントです。
これが無いと、iは0のままなのでi <= 5が永遠に成り立ち、い...
もし無限ループを実行してしまったとしても、'Ctrlを押しなが...
覚えておきましょう。
***break文とcontinue文 [#j715057c]
while文やfor文で繰り返しているとき、途中で繰り返しを抜け...
途中で繰り返しを抜けるための文として''break''文、処理をと...
やはり言葉だけではわかりにくいと思いますので、動作を確認...
まずはbreak文からです。
xs = [0, 1, 2, 3, 4]
for x in xs:
if x == 2:
break
print x
実行すると、
0
1
とだけ表示されます。xが2のとき、if文のx==2が成り立ちbreak...
続いてcontinue文の動きを見てみましょう。
xs = [0, 1, 2, 3, 4]
for x in xs:
if x == 2:
continue
print x
先ほどの例のbreak文をcontinue文に変えただけです。実行する...
0
1
3
4
と表示されます。xが2のとき、先ほどと同様にif文のx==2が成...
すると、現在の周回における以降の処理(この例では「print x...
そのため、2だけが飛ばされて表示されたのです。
では、実際どのような場面で必要になるのでしょうか。
例えば、リストの中に、ある値xと等しい要素が含まれているか...
単純な方法として、リストの最初の要素から順にxと一致するか...
プログラム例を見てみましょう。
x = 5
ys = [1, 8, 5, 2, 9]
for y in ys:
if x == y:
print 'ys includes x.' #ysはxを含む
break
先ほどのbreak文の動作例とほとんど同じですね。xとyが等しか...
途中で抜け出さないと何がまずいのでしょうか。先ほどの例で...
そして、4番目に5があるとします。
すると、5が見つかった段階でbreakで抜け出さないと残りの999...
もちろんysにxが含まれていない場合は最後まで調べることにな...
やはり前者の方を使いたいと思いませんか? プログラミング...
***まとめ [#a0a5c74a]
本項ではプログラムの流れを変えるための文をいくつか学びま...
「リストの要素を全て足し合わせる」「リストの中から与えら...
次項では、これまで学んだ様々な要素をまとめ、より使いやす...
**処理をまとめよう! [#rf1c1ade]
前項までに変数、データ構造、分岐と繰り返しを学び、だいぶ...
しかし、例えば数値を格納したリストの各要素の合計を求める...
total = 0
for x in xs:
total = total + x
などと書くのは面倒です。この例だと3行程度なのでそう大変で...
また、ある程度大きなプログラムを書くことを考えます。この...
このように、プログラムを書いていると処理をまとめておきた...
***関数 [#rf5d3a15]
Pythonにおける処理をまとめるためのもっとも基本的な手段が'...
例えば、「お茶を入れる」という手続きは、「お湯を沸かす」...
また、「お湯を沸かす」という処理も「やかんに水を入れる」...
なんとなく概念は理解できたでしょうか。わからなくても、例...
まずは本項の冒頭で挙げたリストの合計を求める処理を関数に...
def sum(xs):
total = 0
for x in xs:
total = total + x
return total
sum([1,2,3,4,5]) #=>15
sum([6,7,8,9,10]) #=>40
sum([1,3,5,7,9]) + sum([2,4,6,8,10]) #=>55
def から return total までがなんという名前の関数でどうい...
初めての関数を書いてみたところで、少し形式ばった説明をし...
意味はわからなくてもかまいませんので、ざっと読んでおいて...
関数は
def 関数名(仮引数):
処理
で定義し、
関数名(実引数)
で使用します。defはdefineの略で、定義するという意味です。
仮引数というのは、関数に渡されるデータを格納する変数です。
上記の関数sumでは仮引数としてxsを指定しています。
仮引数はカンマ(,)で区切っていくつでも指定することができ...
実引数は関数を使用するときに実際に渡されるデータです。
上記の例では[1,2,3,4,5]や[6,7,8,9,10]を実引数として関数su...
''return''文は実行されると関数を抜け出します。
関数におけるbreak文のようなものです。
return文のあとに指定した値は関数の返す値となります。
こうすることで、関数内で行った計算や処理の結果を関数を実...
関数sumは定義の最後の行でreturn totalによりxsの合計の入っ...
returnのあとに何も指定しない場合やreturn文のない関数は「...
次はリストに値が含まれているか調べる関数containsを作成し...
def contains(xs, n):
for x in xs:
if x == n:
return True
return False
xs = [3,0,6,10,7]
contains(xs, 6) #=>True
contains(xs, 8) #=>False
さて、関数containsの仮引数にxsが指定されており、それとは...
この二つのxsは全く別のものです。
仮引数も含め、関数定義の中でのみ使用される変数は''ローカ...
ローカル変数はその名の通り関数の定義の中などローカル(局...
例を見てみましょう。
def local_variable_test():
x = 10
print x
local_variable_test() #=>10
print x #=>NameError: name 'x' is not...
x = 100
local_variable_test() #=>10
print x #=>100
上記の例より、ローカル変数は同じ名前の変数が有効範囲の外...
ちょっとした装飾を施した文字列を出力するプログラムの練習...
def pyramid(n):
i = 0
while i < n:
pad = ' ' * (n - i - 1)
block = '*' * (2 * i + 1)
print pad + block
i = i + 1
pyramid(5)
何をしているかわかりますか。文字列同士の足し算は文字列の...
それらを利用して、左側に詰める空白やピラミッドのブロック...
pyramid(5)で
*
***
*****
*******
*********
と表示されます。
ここまで、ざっと関数について説明しました。
関数には他にもいろいろ機能があるのですが、それは必要にな...
また、今詳しく知りたい方は[[参考文献>#t39bd3b9]]にあるWeb...
***簡単な入力 [#x314939f]
''raw_input''関数を使います。
print u"↓何か入力してください"
data = raw_input()
print data + u"と入力されました。"
というコードを実行すると入力を促されます。
↓何か入力してください
VIPと入力しEnterを押すと、変数dataに文字列VIPが入ります。
これに "と入力されました。" という文字列を後ろ連結してpri...
VIPと入力されました。
'''書きかけです。'''
***スクリプトとモジュール [#j5b0e0ed]
*もうちょっと教えて! [#bcaaf039]
後で書く
*参考になる本やサイトを教えて! [#t39bd3b9]
**参考サイト [#p6135213]
-Python 一般
--[[Python Japan User's Group:http://www.python.jp/Zope/]]
--[[Pythonのお勉強:http://python.rdy.jp/]]2chまとめ
-プログラミング初心者向け入門
--[[インスタントハッキング:http://www.python.jp/Zope/Zope...
--[[Python チュートリアル:http://docs.python.jp/2.6/tutor...
-他言語経験者向け入門
--[[お気楽 Python プログラミング入門:http://www.geocities...
--[[1時間で覚える?Python:http://bacspot.dip.jp/virtual_li...
--[[Python ハンディマニュアル:http://hp.vector.co.jp/auth...
-その他サイト
--[[Pythonでゲームを作ろう:http://www.halb-katze.jp/]]:py...
--[[Pythonソフトウェア作法:http://www.python.jp/Zope/Zope...
--[[Python Recipe:http://lightson.dip.jp/zope/ZWiki/Pytho...
// [[オヌヌメサイト]]の項目から移動
--[[Pythonでゲーム作りますが何か?>http://d.hatena.ne.jp/...
--[[みんなのPython Webアプリ編>https://docs.google.com/vi...
、サンプルコードはサポートサイトからDL可
**参考書籍 [#eda122c3]
-[[初めてのPython:http://www.amazon.co.jp/dp/4873113938/]]~
値段が高いがその分内容は濃い Python初心者にはおススメ
-for Beginner in ['Pythonで学ぶプログラム作法', ('著者:al...
対象読者は、これからプログラミングを始める人らしい...
終了行:
*目次 [#va99e6f1]
#contents
#br
*どんな言語なの? [#l6f818a7]
Pythonの特徴として
-純粋オブジェクト指向スクリプト言語
-豊富なライブラリ
-欧米で人気
-無料エディターのIdleが付いてる
などが挙げられますが、プログラミングをやったことのない方...
それでは、Google、Microsoft、Yahoo!、Youtubeなどで使用さ...
Pythonは開発者がもともと教育用の言語(ABCといいます)に携...
ところがどっこい、超優れた標準ライブラリ・超超優れたサー...
なのでPython一つで何でも出来てしまうのだ。~
*やってみたい! でもどうすればいいの? [#l4c6ea27]
それではPythonをインストールしましょう。以下ではWindows X...
まずは[[Download Python:http://www.python.org/download/]]...
標準では「C:\PythonXX」にインストールされるはずです。
※現在3.xが在るが、初心者にはオススメしない。~
※理由は、サード(愛好者又は団体)のライブラリが殆ど対応して...
※和訳されたドキュメントも少なく、2.xに比べると、圧倒的に...
※初心者にはPython2.xとPython3.xの橋渡しであるバージョンの...
※下記の説明には、Python2.5が用いられていますが、Python2.x...
次に、Pythonをインストールしたフォルダへパスを通します。~
-マイコンピュータを右クリックし、プロパティを開きます
-「詳細設定」タブの下のほうにあるボタン「環境変数」をクリ...
-システム環境変数またはユーザー環境変数からPath(PATH、pa...
-もともとあった変数値の最後にセミコロン(;)がなければセ...
-「OK」を押して設定を保存します。
パスの設定が完了したら、パスが通っているか確認しましょう...
python -V
と入力してエンターを押してください。
Python X.X
と表示されれば成功です!(これは2.5だと --versionでもいけ...
環境変数の設定が怖い方はもともとの変数値をメモ帳にでも貼...
*インストールしたよ! パスも通したよ! [#k8151f1a]
**スクリプトファイルを作ろう! [#l84c6ef0]
それでは最初のスクリプトを記述しましょう!~
メモ帳を開き、
print 'Hello World!'
と記述してhello.pyと名前を付けて保存します。場所は「C:\My...
cd C:\MyPython
と入力してエンターを押してください。続いて、
python hello.py
と入力してエンターを押してください。
Hello World!
と出力されましたか? おめでとうございます! 初めてのプ...
**対話型シェルを使おう! [#g4b9c658]
Pythonにはちょっとしたテストや計算に便利な対話モードがあ...
python
とだけ入力して実行してください。対話型モードが起動し、
>>> _
というユーザの入力待ちの状態になります。
>>> 3+5
と入力してみましょう。キーを押すのは「3+5」だけです。
8
と表示されて、また
>>> _
という入力待ちの状態になりました。続いて
>>> x = 10
と入力しましょう。これは「xに10を入れる」という意味だと考...
今度は何も表示されずに入力待ちになりましたね。
>>> x
と入力しましょう。
10
と表示されました。xの中身が表示されたわけです。今度は
>>> x + 10
と入力してください。
20
と表示されました。ちゃんと、xの中身と10を足した答えが返っ...
対話型モードは
>>> exit()
と入力するか、Ctrl+Zを入力すると終了します。
**Idleを使いこなそう! [#uec25ae9]
PythonにはIdleという無料のエディタがついています。
スタートメニュー → プログラム → Python 2.5 → IDLE
を開いてください。コマンドプロンプトでpythonと打ったとき...
次にメニューボタンの「File」から「New Window」をクリック...
実際にプログラムを行う時にはこのメモ帳モドキにガリガリ書...
このメモ帳モドキにプログラムを書いてセーブしたら、メニュ...
セーブする時は拡張子を「.py」とすることに注意してください。
ためしに上に書いてある簡単なプログラムをIdleでやってみま...
**Idle使いづらいよ! [#x10113b9]
Idleがお気に召さない諸兄は統合開発環境(IDE)を使いましょ...
-PythonのIDE一覧
--[[PyScripter:http://python.matrix.jp/apps/pyscripter.ht...
--Eclipse + PyDev
--[[Geany:http://www.geany.org/]]
--[[xyzzy:http://www.jsdlab.co.jp/~kamei/]] + [[py-mode:h...
--[[Python Tools for Visual Studio:http://pytools.codeple...
--'''誰か補完頼みます…'''
*初歩でいいから教えて! [#c725d08b]
それでは、入門サイトや書籍が読める程度の知識を身につけて...
たくさんコードが出てきますが、
特に指示のない限りは対話型モードでもスクリプトファイルの...
実際に動かしながら覚えてください。
また、コツの一つとして、「よくわからなくてもとりあえず先...
そのときわからなくても、あとになると「なんだ。こういうこ...
初めてなんですから、最初はよくわからなくて当然です。
あとになって必要になったらもう一回詳しく調べてみれば良い...
せっかくプログラミングを始めたんですから、楽しまなきゃ損...
**画面に出力しよう! [#n2fed3d0]
Pythonには、もっとも手軽な出力としてprintがあります。
print 3
とだけ記入したスクリプトファイルを作成し、実行してみまし...
コマンドプロンプトに
3
が表示されます。3の部分を'Oh, I am printed.'に変えて実行...
Oh, I am printed.
と表示されます。続いて、対話型モードでも同様に入力して見...
同じく、3、Oh, Iam printed.と表示されましたね。
**コメントを入れよう! [#d016dd73]
プログラミング言語には独自の文法があります。
なるべく人間にもわかりやすいようになってはいますが、それ...
そんなときにはコードに''コメント''を入れることで理解しや...
Pythonでは、#の後ろからその行が終わるまでがコメントになり...
#Yes, I want to print 2, not 3.
print 2 # print 3
は、
2
とだけ表示されます。#の後ろはコメントなので、無視されるか...
***コードの表記について [#l1b813e3]
以降、コード例の中でコマンドプロンプトに出力するときはた...
そのとき、たとえば
print 3 + 7 #=>10
等とコメントが書いてある場合、=>の右側はprintを実行したと...
自分で試すときは、コメントは入力しないで結構です。
以降頻繁にこの表記が出てきますので、覚えておいてください。
**データを理解しよう! [#pc0790b4]
Pythonには基本的なデータとして、数と文字列があります。
どちらも言葉通りの意味です。
それぞれ見ていきましょう。
***数 [#d72c5cec]
数には整数や少数があります。複素数もありますが、ここでは...
print 3 #整数
print 3.14 #小数
足す引く掛ける割るはそれぞれ+-*/で計算できます。%は整数同...
print 3 + 7 #=>10
print 12 - 8 #=>4
print 4.6 * 5 #=>23.0
print 8 / 5 #=>1 整数同士の割り算は...
print 8 % 5 #=>3 8 ÷5 = 1 余り 3
print 8.0 / 5 #=>1.6 整数と小数だと結果...
print 7.5 / 2.5 #=>3.0
print 2**3 #=>8 2の3乗。2×2×2
***文字列 [#a8e1fd99]
''文字列''はその名の通り文字の連なりです。
文字をシングルクオート(')かダブルクオート(")で囲むと...
print 'Single Quote String' #=>Single Quote String
print "Double Quote String" #=>Double Quote String
です。文字列の中にシングルクオートを含めたい場合、ダブル...
print "I'm here!" #=>I'm here!
print '"Moe" is a deep thought...' #=>"Moe" is a deep th...
文字列にはほかに生の文字列や3重クオートの文字列があります...
特殊な文字として''エスケープシーケンス''というものがあり...
エスケープシーケンスは「\」に続く記号または英字で表現され、
主に画面に表示できない改行やタブなどを文字列に埋め込むた...
例えば、改行は「\n」、タブは「\t」で表します。
print 'Hello!\nHello!\nHello!'
で、
Hello!
Hello!
Hello!
と表示されます。他にもいろいろなエスケープシーケンスがあ...
文字列も足し算、掛け算ができます。
足し算は文字列の連結、掛け算は文字列の繰り返しになります。
print 'Hello ' + 'World!' #=>Hello World!
print 'Ooops!' * 3 #=>Ooops!Ooops!Ooops!
日本語もおそらく使用できるはずです。対話型モードの場合は...
print 'こんにちは世界!' #=>こんにちは世界!
です。スクリプトファイルで日本語を使用したい場合、utf-8を...
ファイルの先頭に
# -*- coding: utf-8 -*-
とコメントを書いておくと、Pythonはファイルがutf-8で書かれ...
もちろん、ファイルをutf-8形式で保存しておく必要があります。
さらに、日本語の文字列を使用するときは文字列の先頭にuをつ...
これは「この文字列はユニコードだよ」とPythonに指示するた...
このような文字列を'''ユニコード文字列'''と呼びます。
# -*- coding: utf-8 -*-
print u'こんにちは世界!'
print 'こんにちは世界!'
と記述したファイルをutf-8形式で保存し、実行してみましょう。
こんにちは世界!
縺薙s縺ォ縺。縺ッ荳也阜・
と表示されるはずです。uを忘れると不思議な文字列が出力され...
スクリプトファイルで日本語を使いたい場合、先頭のコメント...
**変数を理解しよう! [#l52d299f]
いままではデータをほぼそのまま表示しているだけでした。
しかし、計算した値をとっておいたり、ユーザからの入力を受...
この、なんらかの値を入れておくためのいれもののことを''変...
変数は名前をつけて、何かを入れることで勝手に作成されます。
変数に何かを入れることを''代入''と呼びます。代入の記号は...
x = 10
print x #=>10
確かにxに10が入っています。「=」はあくまで「右のものを左...
なので、
x = x + 10
print x #=>20
といった記述も可能です。数だけでなく、文字列を入れること...
x = 'Oh, I am in variable x.'
print x #=>Oh, I am in variable x.
print x + ' Yeah!' #=>Oh, I am in variable x....
変数には大抵のものが入れられます。もちろん、新しい変数を...
width = 10
height = 30
area = width * height
print area #=>300
では、まだ作っていない変数を出力しようとするとどうなるで...
print madanai
実行すると、以下のようなエラーが出ます。
NameError: name 'madanai' is not defined
そもそもまだ作られていない変数の中身を表示させようとして...
madanai = 'Variable "madanai" already exists.'
print madanai #=>Variab...
今度は表示できました。
**データ構造を使ってみよう! [#ube72689]
たくさんのデータをまとめて管理したい場合、変数だけでは難...
例えば、あなたが先生で100人分の生徒の成績を管理するソフト...
そのとき、100人分の成績を格納するために100個の変数を用意...
たくさんのデータをまとめて格納したいときのために、Python...
ここではリストと辞書というふたつのデータ構造を簡単に使っ...
***リスト [#ke666fe0]
''リスト''はもっとも基本的なデータ構造です。
たくさんのデータが並んでいるような構造をしています。
カンマ(,)区切りのデータを角括弧([])で囲むことでリスト...
x = [10, 5, 8, 6]
print x #=>[10, 5, 8, 6]
リストに入っているデータ一つ一つを'''要素'''といいます。
''インデックス''を使うことで、各要素を利用できます。
インデックスとは、「何番目の要素か」をあらわす整数です。...
print x[0] #=>10 xの0番目の要素は10
print x[3] #=>6 xの3番目の要素は6
x[2] = 7 xの2番目の要素を7に書き換える
print x[2] #=>7
print x #=>[10, 5, 7, 6]
''インデックスは0番目から始まる''ことに注意してください。
xには4つの要素がありますので、有効な正のインデックスは0か...
「正の」と言いましたが、負の数も使えます。
print x[-1] #=>6
print x[-4] #=>10
-1番目が最後の要素で、そこから-1ごとに前の要素を指します。
xには4つの要素がありますので、有効な負のインデックスは-1...
リストは変数同様、数だけでなく文字列やその他のものも入れ...
また、いろいろな要素を混ぜることもできます。
x = ['dog', 'cat', 'cow', 'pig', 'bird']
y = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] #リストの要素...
z = ['pen', ['book', 5], 3.2] #いろいろな要...
インデックスを使って表示したり代入したりしてみましょう。
print y[1] #=>[4, 5, 6]
print y[0][1] #=>2 yの0番目である[1, ...
print z[1] #=>['book', 5]
z[1] = 'bird'
print z[1] #=>bird
リストが持つ要素の数(リストの長さ)はlenで得られます。
lenはlengthの略です。
x = [0, 1, 2, 3]
print len(x) #=>4
インデックスが0から始まることから、あらゆるリストにおいて...
では、有効でないインデックスを指定するとどうなるのでしょ...
print x[10]
以下のようなエラーがでます。
IndexError: list index out of range
インデックスが範囲外だと怒られてしまいました。注意しまし...
空のリストを作成することもできます。
x = []
print x #=>[]
print len(x) #=>0
空なので長さは0になります。
空のリストなんて何の役に立つの?と思うかもしれませんが、...
***リストの便利な機能 [#ibdd06d6]
さて、今まではリスト内の要素を直接記述していました。
それでは変数をいくつも用意するのと、「記述の大変さ」と言...
リストには追加や削除のための機能が用意されています。
この節で学ぶ機能と、次項で学ぶ処理の流れを変える手段を組...
冒頭で述べた「たくさんのデータを処理する」という目的を達...
まず、追加や削除の機能を見ていきましょう。まずはリストを...
x = [1, 2, 3]
リストのappendメソッドを用いることでリストに要素を追加で...
突然「リストのappendメソッド」などと言われても意味がわか...
意味はおいておいて、やり方だけに注目してください。
x.append(4)
print x #=>[1, 2, 3, 4]
x.append('cat')
print x #=>[1, 2, 3, 4, 'cat']
このように、「リスト.append(追加したいデータ)」でデータを...
途中に追加したい場合はリストのinsertメソッドを利用します。
「リスト.insert(インデックス, 追加したいデータ)」でイン...
x = [0, 1, 2, 3]
x.insert(2, 1.5) #2番目に1.5を挿入
print x #=>[0, 1, 1.5, 2, 3]
2番目が1.5になり、今まで2番目だった2が3番目に、同様に以降...
削除する機能もあります。「del 要素」でその要素を削除でき...
del x[2]
print x #=>[0, 1, 2, 3]
xの2番目の要素にdelを適用した結果、先ほど挿入した1.5の要...
リストの非常に便利な機能として''スライス''があります。
インデックスの代わりに範囲を指定することで、リストの一部...
この機能をスライスと呼びます。
例を挙げましょう。
x = [0, 1, 2, 3, 4]
print x[1:4] #=>[1, 2, 3] 1番目から3番目まで
print x[0:len(x)] #=>[0, 1, 2, 3, 4] 0番目からlen(x)-...
print x[3:3] #=>[] 終わりが初めより...
print x #=>[0, 1, 2, 3, 4]
このように、「リスト[始めのインデックス, 終わりのインデッ...
リストのスライス特有の動作として、スライスへのリストの代...
単純に、スライスした部分が代入したリストで置き換わります。
言葉では伝わりにくいかもしれません。例を見てみましょう。
x[1:4] = [10, 20, 30] #[1, 2, 3]を[10, 20, 30]で置き換える
print x #=>[0, 10, 20, 30, 4]
x[4:4] = [1, 2, 3] #4番目の位置に[1, 2, 3]を挿入する
print x #=>[0, 10, 20, 30, 1, 2, 3, 4]
del x[1:4] #=>[10, 20, 30]を削除
print x #=>[0, 1, 2, 3, 4]
初めのうちはわかりにくいかもしれませんが、なれてくると非...
***辞書 [#jb343cbd]
''辞書''はキーと値の組を格納するためのデータ構造です。
例えば国語辞典には、単語とそれに対する説明がたくさんあり...
この場合、単語がキー、説明が値となります。
辞書はコロン(:)で組にしたキーと値のペアをカンマで区切り...
x = {'cat': 'nya-', 'dog': 'wan'}
作成した辞書はキーを指定すると値を返します。
print x['dog'] #=>wan
リストの場合有効な範囲外のインデックスを指定するとエラー...
辞書では、代入に限っては存在しないキーを指定しても大丈夫...
x['one'] = 1
print x['one'] #=>1
ですが、存在しないキーの値をいきなり取り出そうとすると怒...
print x['two']
を実行すると、
KeyError : 'two'
と表示されます。~
キーが存在するかどうか判定するのはdictクラスのメソッドのh...
>>> ham = {'hoge': 'piyo'}
>>> print ham.has_key('foo') # => False
また、以下のようにgetメソッドを使用すると、そのキーが存在...
>>> ham = {'hoge': 'piyo', 'foo': 'bar'}
>>> print ham.get('foo', None) # => bar
>>> print ham.get('baz', None) # => None
&br;
これまで見てきたように、辞書のキーにはたいていの場合文字...
値は変数に入れられるものならなんでも結構です。つまり、ほ...
空の辞書も作成できます。lenで長さを計ることもできます。
print x #=>{'one': 1, 'cat': 'nya-', 'dog': 'wan'}
print len(x) #=>3
x = {}
print len(x) #=>0
***まとめ [#sabebefa]
本項では二つのデータ構造を学びました。
とりあえず、データ構造を使えばデータをまとめて管理できる...
次項からは、これまでに学んだ変数やデータ構造をどう処理し...
**処理の流れを変えよう! [#db0a073a]
これまでの例ではコードはただ順番に実行されるのみでした。
前項の冒頭の「自分が先生だったら」の例を思い出してくださ...
あなたは100人の生徒の成績管理ソフトウェアを作成したいので...
このとき、生徒の成績の平均を求めたいとしましょう。
100人のデータは配列scoresに入っています。
total = scores[0] + scores[1] + scores[2] + ... + scores...
average = total / len(scores)
こんなふうにやっても求められることは求められますが、いく...
また、60点以上なら合格、80点以上なら優秀などというように...
これを実現することは、今まで学んだ知識だけでは難しそうで...
本項では、上記のような処理を実現する、''分岐''と''繰り返...
あわせて、''条件''についても簡単に学びます。
これらの機能をおぼえるとぐっとプログラムらしくなってきま...
***for文 [#pe47df35]
'''for'''文は前項で学んだリストや辞書などの中身に順にアク...
for 要素を入れる変数 in データ構造:
処理
という風に記述します。処理の前に''インデント(字下げ)''...
例えば、リストの各要素の合計を計算したい場合は以下のよう...
xs = [0, 1, 2, 3, 4]
total = 0
for x in xs:
total = total + x
print total #=>10
対話型シェルで実行する場合、
>>> for x in xs:
... total = total + x
...
>>> print total
という具合に、改行のみの行でfor文の終わりを指示します。
total = 0
for x in xs:
total = total + x
print total
と記述すると、print文がfor文の処理に含まれるため
0
1
3
6
10
と繰り返しごとの結果が表示されます。
このように、Pythonではインデントが非常に重要です。
辞書についても同様にfor文で順にアクセスできます(ただし、...
ただし、辞書の場合はキーに順次アクセスします。
pets = {"dog" : 5, "cat" : 2, "pig" : 4}
for pet_type in pets:
print "There are", pets[pet_type], pet_type + "s"
で、
There are 4 pigs
There are 5 dogs
There are 2 cats
と表示されます。pet_typeに入るのは各キーとなります。
また、辞書のkeysメソッドを使うことでキーに、valuesメソッ...
for pet_type in pets.keys():
print pet_type
for pet_count in pets.values():
print pet_count
for pet_type, pet_count in pets.items():
print pet_type, pet_count
を実行してみましょう。一番下のfor文で、要素を入れる変数が...
itemsメソッドはキーと値のペアを順に返すため、受け取る変数...
pig
dog
cat
4
5
2
pig 4
dog 5
cat 2
と表示されます。
値だけが欲しいときはvaluesメソッド、値とペアのセットが欲...
***if文 [#le9900d1]
''if''文は「もし〜だったら○○する」といった、条件による分...
if 条件:
処理
という風に記述します。
字下げは、タブでもスペースでもかまいません。さらに、if文...
といった処理をを実現する''else''文、「そうでなければ、〜...
例を挙げましょう。
x = 7
if x < 5:
print 'x < 5'
elif x < 10:
print '5 <= x < 10'
else:
print '10 <= x'
で、
5 <= x < 10
と表示されます。xに代入する数字をいろいろ変えてみましょう。
「<」は数学の記号と同じです。
他に、「>」「<=」「>=」「==」なども使えます。
「<=」は≦のことです。
「==」は等しいかどうかの比較を表します。
条件部分の式については次節でもう少し詳しく説明します。
ちょっとした応用として、与えられた年がうるう年かどうがを...
ある年が4で割れればその年はうるう年だというのは知っていま...
うるう年の計算はもう少し複雑で、100でも割れればうるう年で...
さらに、100で割れる年でも400で割れる年はうるう年です。
この条件をプログラムにして見ましょう。
year = 1984
if year % 400 == 0:
print year, 'is leap year.'
elif year % 100 == 0:
print year, 'is not leap year.'
elif year % 4 == 0:
print year, 'is leap year.'
else:
print year, 'is not leap year.'
判定の順番とelif文の使い方がポイントです。
yearに代入する数字をいろいろ変えてみましょう。
このうるう年を判定するプログラムは次節でもう少し簡単な形...
続いて、for文と組み合わせてみましょう。
xs = [4, 5, 7, 8, 3, 2, 6, 1, 9, 0]
ys = []
for x in xs:
if x < 5:
ys.append(x)
print ys #=>[4, 3, 2, 1, 0]
数値の入ったリストxsの要素のうち、5未満のものをysに加えま...
***条件 [#nfb70c2e]
ここで、条件部分に書く式について簡単に説明しておきましょ...
式はなんらかの値を返します。
例えば「3 + 5」という式は3と5を足した値である8が返ってき...
では、「==」や「<=」を使った条件式は、いったいなにを返す...
実は、条件式は式が成り立つ場合は''True''、成り立たない場...
x = 10 != 5 #xに10 != 5の返す値を代入
print x #=>True。10は5ではありません!
「!=」は「==」の逆で、異なるかどうかを判定します。
10はもちろん5ではありませんので、xにはTrueが代入されるの...
さて、続いて複雑な条件の書き方について説明しましょう。
''and''や''or''、''not''を使うことで、複数の条件式を組み...
andは左右の式がどちらもTrueのときにTrue、orは左右の式のど...
言葉だけではわかりにくいので例を示しましょう。
x = 20
10 <= x and x < 20 #=>False xは10以上20未満?
x = 15
10 <= x and x < 20 #=>True
x < 5 or 10 <= x #=>True xは5未満または10以上?
x = 8
x < 5 or 10 <= x #=>False
not (x < 5 or 10 <= x) #=>True xは5以上10未満?
最後の式では、orの計算を先に行うためにかっこで囲んであり...
if文の節で挙げたうるう年を求めるプログラムは、条件をうま...
結局、うるう年は「4で割り切れてかつ100で割り切れない年、...
year = 1984
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print year, 'is leap year.'
else:
print year, 'is not leap year.'
と表せます。
条件についてざっと学びました。かなり急ぎ足だったので分か...
はじめのうちは複雑な条件を書いたり読んだりするのは難しい...
気にせず先に進みましょう。
***while文 [#s963055b]
for文はデータ構造の中身に順番にアクセスするための構文でし...
それに対して''while''文は与えられた条件が成り立っている間...
while 条件:
処理
という風に記述します。
条件が成立すれば処理をしたあとまた条件のチェックに戻りま...
成立しなければ処理をせずにwhile文を終了します。
例として、1から5までの合計を求めるプログラムを書いてみま...
i = 1
sum = 0
while i <= 5: #iが5以下のあいだ
sum = sum + i
i = i + 1 #iを1増やす
print sum #=>15
print i #=>6
処理の最後にiの値を1増やしているのがポイントです。
これが無いと、iは0のままなのでi <= 5が永遠に成り立ち、い...
もし無限ループを実行してしまったとしても、'Ctrlを押しなが...
覚えておきましょう。
***break文とcontinue文 [#j715057c]
while文やfor文で繰り返しているとき、途中で繰り返しを抜け...
途中で繰り返しを抜けるための文として''break''文、処理をと...
やはり言葉だけではわかりにくいと思いますので、動作を確認...
まずはbreak文からです。
xs = [0, 1, 2, 3, 4]
for x in xs:
if x == 2:
break
print x
実行すると、
0
1
とだけ表示されます。xが2のとき、if文のx==2が成り立ちbreak...
続いてcontinue文の動きを見てみましょう。
xs = [0, 1, 2, 3, 4]
for x in xs:
if x == 2:
continue
print x
先ほどの例のbreak文をcontinue文に変えただけです。実行する...
0
1
3
4
と表示されます。xが2のとき、先ほどと同様にif文のx==2が成...
すると、現在の周回における以降の処理(この例では「print x...
そのため、2だけが飛ばされて表示されたのです。
では、実際どのような場面で必要になるのでしょうか。
例えば、リストの中に、ある値xと等しい要素が含まれているか...
単純な方法として、リストの最初の要素から順にxと一致するか...
プログラム例を見てみましょう。
x = 5
ys = [1, 8, 5, 2, 9]
for y in ys:
if x == y:
print 'ys includes x.' #ysはxを含む
break
先ほどのbreak文の動作例とほとんど同じですね。xとyが等しか...
途中で抜け出さないと何がまずいのでしょうか。先ほどの例で...
そして、4番目に5があるとします。
すると、5が見つかった段階でbreakで抜け出さないと残りの999...
もちろんysにxが含まれていない場合は最後まで調べることにな...
やはり前者の方を使いたいと思いませんか? プログラミング...
***まとめ [#a0a5c74a]
本項ではプログラムの流れを変えるための文をいくつか学びま...
「リストの要素を全て足し合わせる」「リストの中から与えら...
次項では、これまで学んだ様々な要素をまとめ、より使いやす...
**処理をまとめよう! [#rf1c1ade]
前項までに変数、データ構造、分岐と繰り返しを学び、だいぶ...
しかし、例えば数値を格納したリストの各要素の合計を求める...
total = 0
for x in xs:
total = total + x
などと書くのは面倒です。この例だと3行程度なのでそう大変で...
また、ある程度大きなプログラムを書くことを考えます。この...
このように、プログラムを書いていると処理をまとめておきた...
***関数 [#rf5d3a15]
Pythonにおける処理をまとめるためのもっとも基本的な手段が'...
例えば、「お茶を入れる」という手続きは、「お湯を沸かす」...
また、「お湯を沸かす」という処理も「やかんに水を入れる」...
なんとなく概念は理解できたでしょうか。わからなくても、例...
まずは本項の冒頭で挙げたリストの合計を求める処理を関数に...
def sum(xs):
total = 0
for x in xs:
total = total + x
return total
sum([1,2,3,4,5]) #=>15
sum([6,7,8,9,10]) #=>40
sum([1,3,5,7,9]) + sum([2,4,6,8,10]) #=>55
def から return total までがなんという名前の関数でどうい...
初めての関数を書いてみたところで、少し形式ばった説明をし...
意味はわからなくてもかまいませんので、ざっと読んでおいて...
関数は
def 関数名(仮引数):
処理
で定義し、
関数名(実引数)
で使用します。defはdefineの略で、定義するという意味です。
仮引数というのは、関数に渡されるデータを格納する変数です。
上記の関数sumでは仮引数としてxsを指定しています。
仮引数はカンマ(,)で区切っていくつでも指定することができ...
実引数は関数を使用するときに実際に渡されるデータです。
上記の例では[1,2,3,4,5]や[6,7,8,9,10]を実引数として関数su...
''return''文は実行されると関数を抜け出します。
関数におけるbreak文のようなものです。
return文のあとに指定した値は関数の返す値となります。
こうすることで、関数内で行った計算や処理の結果を関数を実...
関数sumは定義の最後の行でreturn totalによりxsの合計の入っ...
returnのあとに何も指定しない場合やreturn文のない関数は「...
次はリストに値が含まれているか調べる関数containsを作成し...
def contains(xs, n):
for x in xs:
if x == n:
return True
return False
xs = [3,0,6,10,7]
contains(xs, 6) #=>True
contains(xs, 8) #=>False
さて、関数containsの仮引数にxsが指定されており、それとは...
この二つのxsは全く別のものです。
仮引数も含め、関数定義の中でのみ使用される変数は''ローカ...
ローカル変数はその名の通り関数の定義の中などローカル(局...
例を見てみましょう。
def local_variable_test():
x = 10
print x
local_variable_test() #=>10
print x #=>NameError: name 'x' is not...
x = 100
local_variable_test() #=>10
print x #=>100
上記の例より、ローカル変数は同じ名前の変数が有効範囲の外...
ちょっとした装飾を施した文字列を出力するプログラムの練習...
def pyramid(n):
i = 0
while i < n:
pad = ' ' * (n - i - 1)
block = '*' * (2 * i + 1)
print pad + block
i = i + 1
pyramid(5)
何をしているかわかりますか。文字列同士の足し算は文字列の...
それらを利用して、左側に詰める空白やピラミッドのブロック...
pyramid(5)で
*
***
*****
*******
*********
と表示されます。
ここまで、ざっと関数について説明しました。
関数には他にもいろいろ機能があるのですが、それは必要にな...
また、今詳しく知りたい方は[[参考文献>#t39bd3b9]]にあるWeb...
***簡単な入力 [#x314939f]
''raw_input''関数を使います。
print u"↓何か入力してください"
data = raw_input()
print data + u"と入力されました。"
というコードを実行すると入力を促されます。
↓何か入力してください
VIPと入力しEnterを押すと、変数dataに文字列VIPが入ります。
これに "と入力されました。" という文字列を後ろ連結してpri...
VIPと入力されました。
'''書きかけです。'''
***スクリプトとモジュール [#j5b0e0ed]
*もうちょっと教えて! [#bcaaf039]
後で書く
*参考になる本やサイトを教えて! [#t39bd3b9]
**参考サイト [#p6135213]
-Python 一般
--[[Python Japan User's Group:http://www.python.jp/Zope/]]
--[[Pythonのお勉強:http://python.rdy.jp/]]2chまとめ
-プログラミング初心者向け入門
--[[インスタントハッキング:http://www.python.jp/Zope/Zope...
--[[Python チュートリアル:http://docs.python.jp/2.6/tutor...
-他言語経験者向け入門
--[[お気楽 Python プログラミング入門:http://www.geocities...
--[[1時間で覚える?Python:http://bacspot.dip.jp/virtual_li...
--[[Python ハンディマニュアル:http://hp.vector.co.jp/auth...
-その他サイト
--[[Pythonでゲームを作ろう:http://www.halb-katze.jp/]]:py...
--[[Pythonソフトウェア作法:http://www.python.jp/Zope/Zope...
--[[Python Recipe:http://lightson.dip.jp/zope/ZWiki/Pytho...
// [[オヌヌメサイト]]の項目から移動
--[[Pythonでゲーム作りますが何か?>http://d.hatena.ne.jp/...
--[[みんなのPython Webアプリ編>https://docs.google.com/vi...
、サンプルコードはサポートサイトからDL可
**参考書籍 [#eda122c3]
-[[初めてのPython:http://www.amazon.co.jp/dp/4873113938/]]~
値段が高いがその分内容は濃い Python初心者にはおススメ
-for Beginner in ['Pythonで学ぶプログラム作法', ('著者:al...
対象読者は、これからプログラミングを始める人らしい...
ページ名: