1これは、プログラミングコンテストを使ったPythonプログラミング入門です。ある入門書とちがい、コンテストの問題をどんどん解いていき、必要になったらそのときに、足りない分を勉強する、というやり方をとっています。プログラミングやPythonの知識がゼロの人、プログラミングは分かるけどコンテストはやったことない人、をターゲットにしています。日本で一番有名なコンテストサイト『AtCoder』と、人気プログラミング言語『Python』を使います。プログラミングコンテストってなに?プログラミングの力を競争(きょうそう)するコンテストです。問題が与えられるので、それを解くプログラムを書いて提出します。どれだけ多くの、ちゃんと動くプログラムが提出できたかで、順位が決まります。・1時間半くらい・5問くらい・順位やランクがリアルタイムで分かる・レーティング(強さを表すスコア)がつくといったものです。問題1さて、いきなりですが、実際にコンテストに出された問題を見てみましょう。ある文章wが入力されます。これの最後に”s”をつけて、出力しなさい。改)問題の意味は難しくありませんね。文章wの最後に”s”をつけるプログラムを書けばいいようです。wが”cat”なら、”cats”にしてあげればよいのです。いうことでしょうか?これは、言葉で説明するよりも、図にしたほうが分かりやすいでしょう。右の青い四角が、あなたが書くプログラムです。その四角に入ってくる矢印が「入力」(Cat)、その四角から出ていく矢印が「出力」(Cats)になります。ようするに、あなたのプログラムに文章wが入ってくるので、それに"s"を付けて返してよこしなさい、という意味になります。このように、プログラムに入ってくるもの(データ)を「入力」、プログラムから出ていくもの(データ)を「出力」と呼びます。これをやってくれるプログラムを書いてみましょう。Pythonは勉強していないので、とりあえず日本語でそれっぽく。文章wが入力されるwの最後に"s"を付けるwを出力するできました。あとはこれをPythonに直してあげればよいのです。Pythonを準備しようでは次に、パソコンにPythonをインストールしましょう。書いたプログラムがちゃんと動くか確かめるのに必要ですから。Pythonがパソコンにインストールされていたら、この章は飛ばしてもらってかまいません。英語のページですが、怖がることはありません。Windows」が出てくるので、それをクリックしてください。「Python-x.x.x.exe」といった名前のファイルがダウンロードされたはずです。それをダブルクリックし、あとは「すべてのユーザー」を選択して「次へ」をクリックしていってください。自動的にPythonのインストールが開始します。したら、途中で管理者(かんりしゃ)パスワードが要求されるかもしれません。3.x」があることを確認してください。その中の「IDLE」が、この記事で使うエディタ(プログラムを書くために使うアプリケーション)になります。英語のページですが、怖がることはありません。Mac」が出てくるので、それをクリックしてください。「Python-x.x.x.mpkg」といった名前のファイルがダウンロードされたはずです。そのなかに、Pythonインストーラーである「Python.mpkg」があるはずなので、それをダブルクリックします。「次へ」をクリックしていくと、自動的にインストールが開始するはずです。インストールが終わったら、「アプリケーション」フォルダに「Python」があることを確認してください。そこの「IDLE」が、この記事で使うエディタ(プログラムを書くために使うアプリケーション)になります。※Linuxの場合ディストリビューションによってインストールのやり方が違うので、ここでの説明は省略します。3.x)」を選択してインストールすれば良いはずです。Pythonで遊んでみようPythonプログラムを書くために、この記事ではデフォルトで付いてくるIDLE(アイドル)というアプリケーションを使います。このIDLEを起動してください。こんな感じの画面が出てきたはずです(たぶん、メニューバーなどは日本語になってると思いますが)。ここでもうPythonのコードを書くことができます。ためしに、Pythonに適当に足し算や引き算をやらせてみましょう。「>>>」の右側にカーソルがあることを確認して、以下のようにキーをたたいてみてください。(リターンキー)100どうですか?計算結果が表示されましたか?とても単純ですが、これでも立派なPythonのプログラムコードです。「1+1」のあとにリターンキーを押すと、あなたのパソコンでPythonエンジンが動いて、「1+1」というPythonコードを読んで実行し、その結果が画面に表示されるのです。Pythonでは掛け算を表すのに「*」、割り算に「/」を使います。電卓がわりに、いろいろやってみてください。Pythonで遊んでみよう(2)問題に戻る前に、もう少しだけPythonをさわってみましょう。次のように入れてみてください。b3501行目で「aに150を入れる」、2行目で「bに200を入れる」、3行目で「a+bを計算して表示する」ということをやっています。このaとかbのことを『変数(へんすう)』といいます。プログラミングは、1データをコンピュータ内のどこかに取っておいて、2それに何かの作業をする、のが基本です。この取っておいた場所のことを『変数(へんすう)』とよび、それの名前をここでは「a」や「b」とつけた、ということです。変数にデータを入れることを、『代入(だいにゅう)する』といいます。1行目をもっと細かく見ていってみましょう。Pythonエンジンはコードを一字ずつ読んでいって、aまで来た時に、『これは変数を作って、それにaと名前を付けるんだな』と理解します。150を見て、『なるほど、それに数字の150を代入するのか』と考えるのです。イコール記号は、右にあるデータを左に代入する、という意味です。150『変数aを作り、それに数字の150を代入する』という意味になるのです。e350難しくありませんね。d)×e』を計算しています(”*”は掛け算の記号でした)。i53こんな風に、計算結果を変数に代入することもできます。3行目で、『g+h』の結果を変数iに入れてます。変数名だけをタイプしてリターンキーを押すとその中身が表示されます。k'cats'数ではないものを扱うこともできます。’で囲んだものは文章として扱われ、これを『文字列(もじれつ)』といいます。文字列と文字列を足すと、二つがつながったものができあがります。1行目で変数jに文字列'cat'を代入、2行目では変数kに、jと文字列's'をつなげたものを入れてますね。結果は'cats'になっています。'str'ちなみに数字と文字列と足そうとすると、こんな風にエラーになります。この例だと、numには数字(100)、strは文字列('abcde')を代入しています。三行目でこの2つを足そうとしていますが、当然それは無理なのでエラーになっています。問題1はPythonでこうなるさて、では問題1の日本語コードのPython版をお見せします。wを出力するprint(w)日本語で説明してあるので、何をやってるコードなのかは分かるでしょう。「問題1」の章で作った日本語のプログラムが、一行ずつそのままPythonのコードになっています。ちなみに「#」で始まっている行はコメントと呼ばれ、Pythonエンジンはこれを無視します。ようするに人間用のメモです。次に、あなたのパソコンでこのコードを実行してみます。IDLEの「ファイル」メニューから、「新しいファイル」を選んでください。次のような画面が開いたはずです(日本語だと思いますが)。この画面に、さっきのPythonコードをコピーしてください。したら「実行」メニューから、「モジュールを実行する」を選んでください。ファイルを保存するように言われるので、てきとうなファイル名を付けてどこかに保存します。すると、こんな画面が開くはずです。分かりにくいですが、これは「wが入力されるのを待っている」状態なのです。ためしに、適当な単語(”cat”など)をタイプしてリターンキーを押してみてください。無事に、"s"が足されて表示されましたね。よかったら、何度か実行してみて、どんな単語をいれてもちゃんと動くことを確認してみてください。AtCoderに提出するさて、この問題はAtCoderでじっさいに出されたものでした。AtCoderにはむかしの問題もジャッジ(コードが正しいかチェックすること)してくれるすごいサービスがあります。これを使って、このPythonコードが間違いないかジャッジしてもらいましょう。右上にある「新規登録(しんきとうろく)」からユーザー登録してください。Contestというビギナー向けコンテストの、第29回のページになります。「問題」をクリックすると、コンテストで出された問題が表示されます(AからDまでの4問)。複数形」が「問題1」のもともとの問題です。複数形」に行き、下のほうへスクロールすると、「言語」タブと、その下にテキストブロックがあるのが分かると思います。「言語」タブで「Python3」を選択し、テキストブロックへ先ほどのPythonコードをコピーしてください。したら、その下の「提出」ボタンをクリックします。すると、こんな感じの画面に切り替わります。この「WJ...」というのは、いま出したコードをもう少しでジャッジするから、少し待っててね、という意味です。待つと、結果が下のように「AC」に変るはずです。この「AC」というのが、コードが正しかった、とAtCoderサイトにジャッジされたという意味になります。(Acceptedの省略です。問題1のコメントを、もっと細かく書くとこうなります。wを出力するprint(w)1行目の、input()は、『ユーザーからの入力をもらう』という作業をやってくれるものです。's'は、変数wの中身に's'をつけて、さらにそれを同じ変数wに代入しています。最後の、print(w)は、変数wを画面にプリント(表示)しなさい、ということです。画面への表示がプログラムの「出力」になるのは奇妙を思うかもしれませんが、まあそういうものなのだ、と思っておいてください。これで問題1で学ぶ内容はすべてです。この調子で、どんどん問題を解いていきましょう。問題2次の問題はこれです。大文字のアルファベットが1つ入力されます。このアルファベットは、”A”、”B”、”C"、”D"、”E"のどれかです。”A”から数えて何番目かを出力しなさい。改)入力されたアルファベットを、変数cに入れることにしましょう。・cが”A”のときは1・cが”B”のときは2・cが”C”のときは3・cが”D”のときは4・cが”E”のときは5を出力するプログラムを書けばいいようです。こんな感じでしょうか。(5)「cが〇〇のとき」さえPythonに直せれば大丈夫そうですね。(1)「if」は、英語で「もし」という意味です。'A'」と、イコール記号が2つになっていることに、注意してください。これで、『cと’A'が同じ』という意味になります。あわせて、『もしcが’A’と同じなら』です。ぜんぶ書き直すとこうなります。(5)「問題1」のときと同じように、IDLEで実行してみてください。(ファイル→新しいファイルに行って、上のコードを張り付けてから、「モジュールを実行」です)うまくいきましたか?この例では「D」を入力しています。「4」が表示されていますね。したら、またAtCoderにジャッジをお願いしてみましょう。013で出されたものです。A」を選んでください。これが、この問題のもともとの内容です。まえと同じように、「言語」タブから「Python3」を選び、ソースコードを張り付けて「提出」します。「AC」になればOKです!問題3どんどんいきましょう。この問題でもifを使います。いまの月が1~12で入力されます。来月が何月かを出力してください。改)入力された月をmとしましょう。1)ちょっと違います。考えると、これでは12月のときに、「13」と出力されてしまいますね。