第12回目 While ループ他

ページ名:第12回目 While ループ他

このページの変更記録

  • 09/03 16:05 公開
  • 09/27 連絡事項を削除
  • 09/27 サンプル一部変更


教科書『Python Pocket Reference』
⇒ 教科書 p.数字,と書いてあれば,そこをみて,印をつけておくことをおすすめ。
この講義では,自分のために役立つプログラムを作成できるようにする。料理でいうと,自炊ができるレベルを目指す。


初期化プログラム

前回と変更してます。
Python の動かし方
講義では,Jupyter Notebook を利用しています。以下を見ておくといいです。


#初期化プログラム。動作確認を含めて,プログラム作成のとき1度実行しておく
#動作トラブルがあった場合,再度,実行するのもよい。
from math import * # math モジュールを利用する
from matplotlib.pyplot import * #グラフ関係を利用する
%matplotlib inline
from numpy import * #ベクトル演算,行列演算を効率化
from scipy.stats import norm #正規分布の計算
from pandas import DataFrame, read_csv #表形式を扱う
import py3Dmol
from ipywidgets import *
from IPython.display import clear_output
pi # エラー表示がなく,πの値が表示されたら,正常動作している
# 課題提出するときは,初期化プログラムをつける必要なし
# 新たに,表形式のデータを扱う,pandas モジュールを利用する


py3Dmol モジュールがないというエラーが出たら,前回のpy3Dmolインストールを再度実施し,再度,初期化プログラムを実行してください。Azura Jupyuter Notebook では,毎回インストールが必要です。


サンプルプログラムは,ここの表示システムのくせで,行が無駄に空いてます。
本来なら,1行あければ十分です。


折れ線描画を使って,単位円(半径1の円)を描く


#単位円(半径1の円)を表示
TH = arange(0, 2*pi, 0.1) # θ を,1回転分を0.1刻みで生成
X1 = cos(TH) #まとめて,cos を計算
Y1 = sin(TH) #まとめて,sin を計算
plot(X1, Y1) #折れ線描画で描く
axis('equal') #縦軸,横軸の比率を等しくする。
show()


改良

360 度にあたるところが欠けるため,回転をすこし余分にさせます。



#単位円(半径1の円)を表示
TH = arange(0, 2*pi + 0.1 , 0.1) #回転をすこし余分にする
X1 = cos(TH)
Y1 = sin(TH)
plot(X1, Y1)
axis('equal')
show()


楕円を重ねる

 横,縦に比率を掛けて,楕円を作ります。a が,横比率,b が縦比率です。



a = 2
b = 0.5


TH = arange(0, 2*pi+0.1, 0.1) # θ を,1回転分と少し余分に0.1刻みで生成
X1 = cos(TH) #それぞれに,cos, sin を計算
Y1 = sin(TH)


X = X1 * a
Y = Y1 * b


plot(X1, Y1)
plot(X, Y)
axis('equal') #縦軸,横軸の比率を等しくする。
show()


関数に仕上げる

 プログラムは,関数の形にします。そうすると,使うときに使いやすいです。
楕円の線ということで,elliptic_l( ) としました。


def elliptic_l(a, b): #楕円線

   TH = arange(0, 2*pi+0.1, 0.1) # θ を,1回転分と少し余分に0.1刻みで生成
   X1 = cos(TH) #それぞれに,cos, sin を計算
   Y1 = sin(TH)

   X = X1 * a
   Y = Y1 * b

   plot(X1, Y1) #単位円
   plot(X, Y) #楕円
   axis('equal') #縦軸,横軸の比率を等しくする。
   show()

elliptic_l(3, 0.2)


試行錯誤ができるように,while ループを使う

while ループは,初めて登場です。
input( ) が入力を受け付ける関数です。
float( ) は,受け取った文字列を実数にします。



lp = True #ループをするというフラグ
a = 1.0
b = 1.0


while lp: #条件が True の間ループ

   elliptic_l(a, b)
   a = float(input('横軸の比率(0.1 未満なら終了)'))
   if a > 0.1:
       b = float(input('縦軸の比率'))
   else:
       lp = False


while ループと for ループ

 Python 言語では,繰り返す部分を記述するのに,for ループまたは,while ループを使います。
for ループの方が,単純にかけます。細かい設定が必要なときは,while ループを使います。



#for と while の違い
#for ループはシンプル
#while ループの方が,細かい制御が可能


# 1 から 10 までの合計


s = 0
for i in range(1, 10+1):

   s = s + i

print(s)


s = 0
i = 1 # for ループではいらない
while i < 11:

   s = s + i
   i = i + 1 # for ループではいらない

print(s)


GUI 部品を使う

画面上の,ボタン,スライドなど,GUI 部品(グラフィック・ユーザ・インタフェース・パーツ)といいます。
または,ウィジット(widget, 窓を作るガジェット) と言います。
GUI 部品を使うのを自動化的に行う,関数名 interact( ) を使うと


interact(elliptic_l, a = 1, b = 2) #elliptic_l に( ) がないのに注目

で,できます。試行錯誤するのに,while ループが必要になくなります。


課題1

 While ループで,1から30まで,3の倍数のみ合計し,表示する。


課題2

 適当な関数と interact を組みあせてみる。


def myPrint(x):

   print(x)

interact(myPrint, x='こんにちは')


課題報告は

  • 課題を実施した感想,あれば質問

それに加えて
「While ループ, interact を使えるようになった」と書き
プログラムも書いてください。


(投稿された他の学生のものはコピーして修正しないこと。これをやると伝言ゲームのようにだんだんおかしなプログラムになる)



登場した用語

  • while ループ
  • GUI
  • フラグ
  • True
  • False

質問と返答

講義への質問は,suehiro3721p@gmail.com まで


講義メモ(先生のための覚え書き)

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

第7回目 関数作成

このページの変更記録08/05 13:36 公開第7回課題実施報告の締め切りは,8/12です。(締め切りに遅れても受付はします)課題報告メールの件名はA-303xxxx-07 名前(漢字名がのぞましい...

トップページ

https://wiki3.jp/MathPython 内で書かれていることは,ご自由にご利用ください。管理者により改変されることもあります。工学部学生のための Python 入門(大学のプログラム入...

Python の動かし方

Jupyter Notebook を使うほぼ互換の Google Colaboratory を使うGoogle ドライブの中で,「新規」の「その他」の中で,Google Colaboratoryを選ぶ...

第14回目 課題実装例

このページの変更記録09/19 執筆中第14回目の課題はありません。今後の Python 利用 Pyrhon プログラムの料理でいうと自炊レベルとは,必要に応じて,自分専用の関数を作れることといってい...

第11回目 辞書型

このページの変更記録08/24 公開09/27 課題報告メモを削除09/27 サンプル一部変更教科書『Python Pocket Reference』⇒ 教科書 p.数字,と書いてあれば,そこをみて,...

第15回目 単位課題

このページの更新記録1019 質問への返答追加08/12 00:15 準備運動のようにキーボード練習をする,を追加08/13 13:16 質問への返答追加。締め切りについて。09/19 16:49 課...

第10回目 インストール

このページの変更記録08/16 17:12 公開08/31 15:07 分子コードの例を追加,文章の言い回し一部訂正インストールAnaconda(アナコンダ)をインストールする 2020年夏現在,Py...

第5回目 For ループ

このページの変更記録08/01 09:09 公開 08/01 09:15 訂正 08/01 12:19 サンプルプログラムに行が余分に空いて表示されると書く08/01 12:54 用語に,「ブロック」...

py3Dmol で画像が出ない。

ブラウザのキャシュエラーキャシュをクリアをする。Ctrl キー押しながら,更新ボタンをおすまたは,キャシュクリアーするツールを起動するChromebook だとhttp://atomurl.net/c...

第8回目 CSVファイル

このページの変更記録08/07 17:52 公開08/07 18:08 誤字訂正,言い回し変更08/08 00:32 サンプルプログラムに「#確認用表示」のコメントを追加08/08 00:36 課題文...

モジュール

ソースプログラムの保管単位 Python 言語の仕様上最初から入っているもの標準モジュールインストール時にいっしょに入るもの外部モジュール組込みモジュール,標準モジュール でないモジュール。組込みモジ...