LogoMark.png

Python/Introduction

Pythonプログラム入門

Sample:MonteCarlo Method

プログラミング初心者にとって、一般的な文法解説はハードルが高いものです。ここでは、簡単なサンプルプログラムを通して、Pythonプログラムの書き方を体験してみましょう。

CONTENTS


サンプルプログラム1

ファイルの新規作成

サンプルコード

2つの数値を順に入力すると、その積(掛け算した値)が出力される・・というシンプルなプログラムです。以下のコードをコピー&ペーストして下さい。

a = input( "a = " )
b = input( "b = " )
a = int( a )
b = int( b )
c= a*b
print( "a x b = ", c )


実行




サンプルプログラム2

モンテカルロ法を使って π の近似値を求めるプログラム

モンテカルロ法とは

計算機を使った数値計算手法の一つで、乱数を用いた試行を繰り返すことによって確率論的に近似的に求める解を得る手法です。名称の由来はカジノで有名なモナコ公国のモンテカルロ地区・・と言われています。

πの値を求める手法の解説

Montecarlo_pi2.PNG

Wikimediacommons File:Montecarlo pi2.PNG

ファイルの新規作成

サンプルコード

以下のコードをまるごとコピー&ペーストして下さい。

実行

サンプルプログラム2の解説

import <モジュール名>

既存のライブラリプログラムを利用するための下準備です。Python には、様々な既存の機能が「ライブラリ」というかたちで用意されています。例えば、乱数を発生する機能もその一つで、みなさんがその機能を実現させるためのコードを一から書く必要はありません。

import math        # 数学関数を利用する場合に読み込みます。
import random    # 乱数を利用する場合に読み込みます。


変数と代入

変数の活用と、代入処理はプログラミングの基本です。

n = 1000

制御文

上記のプログラムでは if 文for 文を利用していますが、プログラムの流れを制御するには、これに while 文 を加えた3つの文の書き方がわかっていれば、大半のことは可能になります。

if 文

判断結果(true / false)によって処理を分岐します。

 if r <= 1.0:
     cnt_in += 1
 else:
     cnt_out += 1

この例では、r が 1.0以下の場合は、cnt_in が1つ増え、そうでない場合は、cnt_out が一つ増えます。

for 文

一定回数処理を繰り返す場合に利用するものです。

for i in range(1000):
    # ここに処理内容を記述

この例では i の値が 0 から 999 まで「処理」が1000回繰り返されます。

while 文

while 文は条件が真の間処理を繰り返します。

while n < 100:
    # ここに処理内容を記述

この例では n の値が 100未満の場合に「処理」が繰り返されます。

range関数 について

range 関数は開始値から終了値(未満)までの数値を要素として持つオブジェクトで、繰り返し処理では頻繁に利用されます。

range(start, stop[, step])

インデントについて

Python ではインデント(字下げ)によってブロックを表現します。

コメントについて

Python では # 記号以降はコメントとして扱われます。プログラム上で文の機能を一時的に無効にする(コメントアウト)場合にも利用可能です。

サンプルプログラム3

spaceinvaders.jpg

GitHub上にある、spaceinvaders をダウンロードして、ローカルPC上で動かしてみましょう。

このプログラムは GUIベースのプログラムとして動くので、Colaboratory(jupyter notebook)で試すことはできません。自身のPCにPythonの環境(IDLE含む)がインストールされていることが前提となります。以下、標準でインストールされる Python IDLE を使って試す方法です。


準備

とりあえず、実行

パッケージのインストール

この作業は、Terminal(Windowsではコンソール)で行う必要があります。

再度実行




APPENDIX

PAGES

GUIDE

DATA

添付ファイル: filespaceinvaders.jpg 26件 [詳細]
Last-modified: 2023-09-04 (月) 15:36:22