タイトルだけだと何のこと言ってるのか分からないかもしれませんね。。。
今回は自分で考えてプログラミングをしてみようっと思ったのです。
街頭においてある自動販売機。
あれの仕組みをPythonプログラミングで書いてみよう!って思ってね。
ジュースの仮想自動販売機の仕組みを作りたい~
さて、どんなものを作るかって事なんですけども~
まだ私初心者なのでね。難しい事は出来ないし分かんな~い!!
そこで機能限定の自動販売機ってのにしました。
題して「こんな自動販売機はある筈が無い!でもプログラミング~!」。。。(-“-)
しかしながら動きとしては実際の自動販売機を想定して
お金を入れるとジュースが買えて、お釣りも出て来るって仕組みにしようと思ってます。
けども、お金は文字入力だし、商品のジュースだって文字での提供です。。。
お金は100円なら100って数字、
商品はオレンジジュースなら【オレンジジュース】って画面に表示されるだけって具合でね。
お釣りも870円とかなら【お釣りは870円です】って表示するだけ~!!!
自動販売機の画面だって只の「文字だけの画面」~!!!
まあ、こんな簡単な仕組みですけども~
色々と命令を調べたりなんかしてね、作ってみたいと思います~!!( *´艸`)
プログラミングする自動販売機の【前提条件】を書いときます~
【前提条件】
お客様は必ず商品の金額以上のお金をいれる。
(甘い考えですがね。。。最初なんで。。。m(_ _;)m)
お金は実際のものは使わないで、100円なら「100」という数字を入力する。
お金は1,000円までは投入できる。お客様は1000円以上は投入しない。m(_ _;)m
購入は一度に1回だけ。購入したらスグにお釣りが出る。お釣りが0円の時にはお釣りは出ない。
商品(ジュース)は130円均一にする。
ジュースは【オレンジ】【コーラ】【アップル】【コーヒー】【紅茶】【ミネラルウォーター】の6種類だけ。
ボタンは無いから画面に表示されている番号を選んで入力する。
1:オレンジ 、2:コーラ、3:アップル、4:コーヒー、5:紅茶、6:ミネラルウォーター、0:購入をやめる
商品は【オレンジジュース】の様に文字で出す。
お釣りは出す。【お釣りは870円です。】の様に文字で。
それからねこれは重要なんですけども~
必ずプログラムを終わらせる仕組みを作っておかないといけません。。。
「プログラムを終了させたい時には130円より少ない金額を入れる。」
このプログラムを終了させる仕組みが無いとね~
永遠に止まらない暴走プログラムになっちゃうんです~
こうなると大変だからね~
終了する部分は必ず作っておきます~!
自動販売機と購入者の動きについて
- 自動販売機は【いらっしゃいませ。お金を入れてから商品の番号を選んでください。】を表示して次の行に「お金を入れてからご利用ください。(一度に1000円まで使えます。)」を表示して待つ。
- 購入者がお金をいれる。
- 投入された金額が130円未満の時には【お釣りは○○円です。】【本日の営業は終了いたしました。】を表示してプログラムが終了する。
- 自動販売機に130円以上のお金が入ったら、「商品の番号を選んでください。」を表示して下に「番号と商品名」を表示して「どの番号にしますか?」を表示して待つ。
- 購入者が番号を入れる。
- 自動販売機は商品を出す。【お釣りは○○円です。】と表示してお釣りを返す。但し、お釣りが0円の時にはお釣りは返さない。(【お釣りは○○円です。】は表示させない。)
- 自動販売機の動きは「1.」に戻る。
どうでしょうかね。これで少し単純な自動販売機の動きになったのではないでしょうか?
でも、130円未満の金額を入れたらいきなり【本日の営業は終了いたしました。】になるなんてあり得ないですよね!
大体、ビックリ!しますよね!
今時ならSNSとかに投稿されます~!!!
まあ、この辺は初心者なんで~ホントにすんません。。。m(_ _;)m
python(パイソン)のプログラムで繰り返しってどうやるのさ~!!!(while)
昔、BASICという言語があったのですがね。もう知らない人も多いのでしょうなぁ。
あれでGOTOでしたかね。プログラムの中をあっち行ったりこっち行ったり出来たのです~
でも、使い易い分、なんか頭の中がコンガラガッチャウって事が有りましたなぁ。
そうならない為にもなんかよい関数を見つけようとして~
見つかったのが~whileというやつ。。。
while 条件式 :
繰り返す事
この中の条件式ってのには比較とかも使えて~
例えば a < 5 とかだと~
a = 1
while a < 5 :
繰り返す事
a = a + 1
「変数 a 」の中身が5より小さい数の間(True)は「繰り返す事」をやりなさいって事らしいです~
だから「a」の中身を「繰り返す事」の中でどんどんと数を足していって~
次は2になり~
次は3になり~
ってやっていって~
a = 5になった時に、この繰り返しから抜け出すって事になるのですね。
でも、待ってくださいよ。
そうすると回数を指定しないとダメですよね。この使い方だと~!
今回のプログラムでは~
回数ではなくってね。自分が130円よりも小さいお金を自動販売機に入れたら終わる様にしたい訳です。
そんな時はどうすれば?っと思って調べたところ~
break
っていう
命令がありましたね。
while True :
繰り返しやる事
<<上のプログラムの簡単な説明>>
「これだけだと無限に繰り返す事(無限ループ)になってしまう。」
(暴走プログラム)
だから意図的に繰り返す事を止める必要が出て来る。
下の様に変更してやれば~
自分の好きなタイミングで繰り返す事を抜け出せるんです~
while True :
kingaku = input('お金を入れてからご利用ください。')
if int(kingaku) < 130 :
break
else :
繰り返しやる事
<<上のプログラムの簡単な説明>>
input()で入力されたものは文字列になる。
だからkingaku の中身は文字列。
その為、文字列を数値に変換してやらないと130との比較が出来ない事になる。
(文字列は数値と大きさを比べられない。)
int()ってのはkingakuの中身を数値に変換してくれる関数。
人が130未満の数(文字)を入れてきたらbreakしてwhileの無限ループから脱出できる事になる。
ちなみに「else :」ってのは無くっても大丈夫。
while以外の関数も含めちゃったからちょっと見づらいかもしれませんがね。
まあ、こうやって中からbreakで抜け出すところを作っておけば無限ループからは脱出出来る様になります。
今回はこのやり方を使っていきますね。
さてさて、int()とかも出てきたので少し説明を。。。
int()は文字列を数値に見立ててくれます。
数字で書かれた文字列(‘123’とか)を整数(123)に直して数値として利用できる様にします。
これやっておかないと~
プログラムを動かした時にね、ifのところで使った「<」の記号のところで引っ掛かってエラーになります。
(IDLEで実施してみましたよ~!動かした時に確かにエラー出ました。。。((+_+)))
文字列と数値は比較「’123’(文字列) < 130(数値)」が出来ね~!ってね。
だからinput()で入力した文字列を数値に変換「int()」して「<」の規則に当てはめたって訳です。
(※「123(数値)< 130(数値)」になればOKなのです~)
ここでも、分かった事があってね。
プログラムって書き方で出るエラーってのと~動かして初めて分かるエラーってのが有るって事。
書き方の文法としては間違ってないけども~
動かしたらデータのやり取りで型が違ってるじゃ~んってやつは新鮮な発見でしたなぁ。。。
これは動かしてみるまで判らないとこありますものね。
あと、無限ループを抜け出すとこだけはホントに気を付けないといけない。。。(-“-)さもないと抜け出せなくなって~
暴走してしまうかもしれませんなぁ~!!!
エラーで止まってくれればいいですがね。。。
まとめ
いや~調べるのと勉強するので結構な時間を使ってしまったのでね~
プログラミングは次回にしますかぁ~
でも、繰り返しの命令はwhileだってのが分かっただけでもイメージは湧いてきましたよ~
その他にもforってのも有ったのですけども~
今回はwhileを使いますね。
int()ってのも勉強できたし、データの型が違うと比較も出来ない事が有るってのが分かった~!!!
いやいや面白かったです~
それでは次回、プログラミングしていきますね~
ここまで読んで頂きまして誠に有難うございました。
嬉しい楽しいついてます。
感謝
泉水善光
↓↓↓↓↓↓↓↓↓↓↓↓ついにやりました~!人生初のpythonプログラミング~
老人でもやってみるもんですなぁ~!!!まあ、下手くそプログラムですがね。。。(^_^;)
↓↓↓↓↓↓↓↓↓↓↓↓古いパソコンにパイソンを入れてみましたよ!
パイソンの環境設定はこちらに書いておきました。
興味があればお読みください。