おもしろ科学コンテスト 予選通過(高校生)Python

Python0000.jpg

高校2年の息子がおもしろ科学コンテストの予選を通過したそうで次のコンテストに向けてプログラム言語「Phthon」を使える環境が欲しいとたのまれました。

正直私もそこまで興味がなかったのですが、予選を通過したのなら協力しなきゃね・・
ここからは「Phthon」をインストールして使うまでの手順をご紹介したいと思います。
■Pythonダウンロード
からそれぞれの端末にあったものをダウンロードします。
Python01.jpg
私の場合はWindows 10 64bit だから
Python-3.xx.x-amd64.exeとなります。
amd64とありますが、AMDのCPU専用という意味ではないので
CPUがIntelでもAMDでも問題ありません。
■ダウンロードしたPython-3.xx.x-amd64.exeをダブルクリック
Python02.jpg
■下の2つにチェックを入れます。
Python04.jpg
成功したらCloseで閉じます。
■スタートメニューからPython/eIDLE(Python3.xx)をクリックしてIDLEを起動
Python05.jpg
スタートにピン止めしておくと楽です。
■IDLE Shellが立ち上がります。
Python06.jpg
■左上FileタブからNew Fileを選択
Python07.jpg
■エディタが立ち上がります。
Python08.jpg
■例題1 Hello,Worldを表示する
Print(‘Hello,World’)と入力します。
上の# 例題1~の行はコメントです。#以降はコメントを追加できます。
Python09.jpg
プログラムの実行
■上のRunタブからRunModuleを選択
Python10.jpg

説明
print(‘Hello, World’)はPythonの基本的な出力コマンドです。
このコマンドは単純に”Hello, World”という文字列を出力します。
print関数は、引数に渡されたオブジェクト(この場合は文字列)を標準出力に出力します。
実行すると、コンソールやターミナルに以下の文字列が表示されるでしょう。
Hello, World
■セーブしますかと聞かれるのでOK
Python11.jpg
■適当にファイル名をつけてセーブします。
Python12.jpg
■保存が完了すると実行結果が表示されHello,Wroldが表示されました。
Python13.jpg
例題2 ファイルの入力、出力
 info.txtファイルの中身を取り出し数字がいくつ入っているかを出力する。
 
Pythonの実行ファイルと同じフォルダにinfo.txtを作成します。
 何もないところを右クリックして新規作成テキストドキュメントを選択
Python14.jpg
■ファイル名を今回はinfo.txtに変えます。
Python15.jpg
Python16.jpg
■info.txtをメモ帳で開いて適当に数字をいくつかいれる(今回は10桁)
Python17.jpg
■上書き保存
Python18.jpg
■先ほどとは別にプログラムファイルを作ってもいいし
 今回はめんどくさいので下に入力します。
Python19.jpg
■例題2 説明

f = open(‘info.txt’ ,’r’, encoding=’UTF-8′)
info.txtファイルを読み取り専用モード(‘r’)で開き、エンコーディングをUTF-8で指定します。
data = f.read()
ファイルオブジェクトfからデータを読み込み、data変数に代入します。
print(len(data))
データの長さ(バイト数)をprintです。
f.close()
ファイルオブジェクトfを閉じます。
このコードはinfo.txtファイルからデータを読み込み、そのデータのバイト長を表示します。
ファイルを開いたら必ず閉じるようにするのが良いプログラミング習慣です。
■例題1と同じように実行します。
Python20.jpg
例題1のHello,Wroldの下に10と出力されました。


※もし、プログラムに間違いがあったとしてもエラー表示で教えてくれるので簡単です。
Python21.jpg
■例題3 各種インポート
Python22.jpg


■例題3 説明

このコードはmathモジュールからmath.factorial関数をインポートし、10の階乗(10!)を計算して表示するコードです。

import math
mathモジュールをインポートします。mathモジュールには数学関連の関数が定義されています。

math.factorial(10)
mathモジュールからfactorial関数を呼び出し、10の階乗を計算します。

print()
factorial関数の計算結果をprintで標準出力に表示します。

■math.factorial関数は引数で指定された数の階乗(階乗とはその数のすべての正の因子の積)を計算 します。

10の階乗は10×9×8×⋯×3×2×1なので、正解は3628800です。

このコードはmathモジュールから関数をインポートし、その関数を利用して数値計算を行い結果を出力する基本的な形式となっています。

Python23.jpg
結果が表示されました。
息子が言うにはこれらの関数やプログラムをあらかじめ用意しておくのは自由らしいです。
本を持ち込んだり、ネットをつなぐこと以外なら本をあらかじめPCに取り込んでおいても問題ないらしいのでプラグラムに慣れていない高校生なら準備がものを言うテストです。
私も少し調べてみたのですが情報の過去問がありませんでした。
もしかしたら最近新しくできた課題なのかもしれませんね。
AtCoderなどの競技プログラミングコンテストの低いレベルくらいが出題されるかもしれません。
私もAtCoder初めて知りましたがプログラミングがしたいけど何をしていいかわからない人にはもってこいの内容ですね。
私も何度もプログラミング挫折してますが、息子の小さい時にこういうの一緒にやればよかったなって思います。
問題文の例
二つの正整数 a,b が与えられます。aとbの積が偶数か奇数か判定してください。
制約

1 a , b 10000

a,bは整数
■解答例
Python24.jpg
■実行結果
Python25.jpg
■解説
このプログラムは、二つの正整数を入力受付し、その積が偶数か奇数かを判定および出力するプログラムです。

入力値の確認
まず、正整数の範囲と型をチェックします。
※int 整数型

1.aの入力を求める文言を表示します
print(“aを入力してください”)


2.aの入力値を整数型に変換して受付します
a = int(input())


3.aの入力値が1から10000の範囲内かチェックします
if 1 <= a <= 10000:

#あてはなるなら次の文へ
else:  #それ以外なら
  print(“aは範囲外です”)



4.bの入力を求める文言を表示します
aと同じ


5.bの入力値を整数型に変換して受付します
aと同じ


6.bの入力値が1から10000の範囲内かチェックします
aと同じ


■計算と判断
7.aとbの積(product)を計算します
product = a * b


8.productを2で割った余りが0か判断します

   if product % 2 == 0:
0なら偶数、0でないなら奇数



■出力
9.偶数の場合は”偶数”を、奇数の場合は”奇数”を出力します

      print(“偶数”)
    else:  
      print(“奇数”)

10.入力値の範囲外の場合はエラー文言を出力します

else: 
  print(“aは範囲外です”)

この流れで、正しい入力値を受け付け判定結果を出力できるプログラムになっています。
範囲チェックやデータの型変換も行い、入出力処理が丁寧に行われています。

どれくらいのレベルが出題されるかわかりませんが頑張ってほしいですね。
みんな私より何十倍も賢い子ばかりなのでこんな説明は不要かもしれませんが、私も興味があったので・・。
それにしても端末自分で用意しろとか、学校で与えられてる端末は管理者権限でアプリを入れられないとか・・準備できたもの勝ち・・そんなんでいいんだろうか?
平等にやってほしいものです。
ちなみに私の息子、後で聞いたら数学と物理と化学を担当するから情報はやらないんだって!
早く言いなよ。
おもしろ科学コンテストはチーム戦だからがんばって全国大会行ってほしいですね。
かなり厳しそうだけど。

コメント

タイトルとURLをコピーしました