こんにちは。
今回はこれまでの知識を整理して課題を解いていきましょう。これまでの学習の流れです。
四則演算、数値列、文字列についてまとめた記事については、以下の記事を参照ください。
【Python】数値と文字列について【初心者向け】
続きを見る
変数・論理値・演算子については以下の記事をご参照ください。
【Python】変数・論理値・演算子について【初心者向け】
続きを見る
関数の基本については以下の記事をご参照ください。
【Python】関数の基本について【初心者向け】
続きを見る
オブジェクトとメソッドの使い方については以下の記事をご参照ください。
【Python】オブジェクトとメソッドについて【初心者向け】
続きを見る
if, elif, else文の使い方【制御構文】については以下の記事をご参照ください。
【Python】制御構文・条件分岐の基本について【動画・画像付きで解説】
続きを見る
while文の使い方【繰り返し構文】については以下の記事をご参照ください。
【Python】while文の使い方について【繰り返し構文の基本】
続きを見る
for文の使い方については以下の記事をご参照ください。
【Python】for文の使い方について
続きを見る
今回の課題を解くための「理解度の目標」です
- 数値を入力・加算し、平均値の求める事ができる
while構文
,break
の使い方を理解している-
if文
を理解している -
append
の使い方を理解している -
list[]
length[]
の使い方を理解している
課題内容としては、「参加者の所持金を入力していくような指示を与え、0円が出た時点で指示を中止し、所持金の総和が出してその平均値を求める」プログラムを作成するというものです。
仕様は以下になります。
while
を使って無限ループを作成する- 「
あなたの所持金を教えてください:
」と表示して、所持金の金額(整数値)を入力する - 平均金額は「所持金の合計値 / 参加者の人数」で求められるので、一旦、入力された所持金を合計値に加算する
0
と入力されたら、そこで繰り返し処理を終了する- 最後に「
皆さんの所持金の金額の平均は○○円です
」と表示する
これを目標に学習していきます。では早速みていきましょう。
制御構文の使い方の復習
制御構文を理解する為に有用な動画
制御構文(if文)|中学生でも分かるPython入門シリーズ
制御構文(for文)|中学生でも分かるPython入門シリーズ
制御構文(for文/応用)|中学生でも分かるPython入門シリーズ
制御構文(break文・continue文)|中学生でも分かるPython入門シリーズ
Python3 programming tutorial : While loop
こちらは英語教材ですが、while構文についてサラッと解説しており、分かりやすいので是非視聴してみてください。
list
構文とappend
メソッド
list構文は list = [ ]
のとする事で初期化する事が出来ます。更に、append
を使用する事で list
に要素を加える事が出来ます。
また、list[]
に含まれている項目の要素を算出する際には length[]
を使用すると確認する事が出来ます。
プログラムはlist[]
を初期化してから appned
メソッドを利用して項目を増やしていき、最後に length
で項目数を確認するという流れで構成されます。
以下にappend
メソッドに関する参考記事になります。
【Python】appendの使い方のまとめ【基本から応用まで】
続きを見る
list構文を理解する為に有用な動画
複数の変数を扱おう|中学生でも分かるPython入門シリーズ
この動画では list
とtupple
の違いについても解説していますが、tupple
については今後別の項でも詳しく扱います。まずはlist
のappend
の使い方について学習しましょう。
Python Tutorial for Beginners | list in Python
こちらは英語教材ですが、Teluskoさんの教材は分かりやすくオススメです。
まとめ|課題
課題内容
もう一度課題内容のおさらいです。
課題:「参加者の所持金を入力していくような指示を与え、0円が出た時点で指示を中止し、所持金の総和が出してその平均値を求める」
仕様:
while
を使って無限ループを作成する。- 「
あなたの所持金を教えてください:
」と表示して、所持金の金額(整数値)を入力する。 - 平均金額は「所持金の合計値 / 参加者の人数」で求められるので、一旦、入力された所持金を合計値に加算する。
0
と入力されたら、そこで繰り返し処理を終了する。- 最後に「
皆さんの所持金の金額の平均は○○円です
」と表示する。
まずは以下の解答を見ずにご自身でコードを書いてみてください。
解答①|入力した数値を加算した平均値の求め方
それでは上に記載したWhile
構文, list
, append
, を使用して入力した数値を加算した平均値を求めてみます。
In[]
1 2 3 4 5 6 7 8 9 10 11 12 | money_list = [] while True: money = int(input("あなたの所持金を教えてください:")) if money == 0: break money_list.append(money) s = sum(money_list) n = len(money_list) average = s / n print("みなさんの所持金の平均額は",average,"です。") |
以上がコードになりますが、ポイントについて説明していきます。
ポイントとしては、所持金が "0" を入力させた時点で break
を発動させて while構文
を終了する事です。
その上で、list
構文、append
メソッドを駆使して所持金を加えていきます。
最終的に sum
, len
で合計数、人数を算出し、sum / len
で平均値を算出します。
input
した結果の一例を以下に記載しておきます。
Out[]
1 2 3 4 5 6 7 8 9 10 11 12 | あなたの所持金を教えてください:870 あなたの所持金を教えてください:600 あなたの所持金を教えてください:300 あなたの所持金を教えてください:100 あなたの所持金を教えてください:1200 あなたの所持金を教えてください:908972 あなたの所持金を教えてください:12 あなたの所持金を教えてください:0 みなさんの所持金の平均額は 130293.42857142857 です。 Process exited with code: 0 |
解答②|入力した数値を加算した平均値の求め方
別の解答例も示します。
In[]
1 2 3 4 5 6 7 | money = [] while True : money.append(int(input("あなたの所持金を教えてください:"))) if 0in money: money.remove(0) break print("皆さんの所持金の平均は", sum(money)/len(money),"円です") |
Out[]
1 2 3 4 5 6 7 8 | あなたの所持金を教えてください:500 あなたの所持金を教えてください:200 あなたの所持金を教えてください:300 あなたの所持金を教えてください:100 あなたの所持金を教えてください:2 あなたの所持金を教えてください:1 あなたの所持金を教えてください:0 皆さんの所持金の平均は 183.83333333333334 円です |
解答③|入力した数値を加算した平均値の求め方
更に、別の解答例も示します。
In[]
1 2 3 4 5 | money = [] while True : money.append(int(input("あなたの所持金を教えてください:"))) if 0 in money : break print("皆さんの所持金の平均は", sum(money)/(len(money)-1),"円です") |
Out[]
1 2 3 4 5 | あなたの所持金を教えてください:100 あなたの所持金を教えてください:200 あなたの所持金を教えてください:300 あなたの所持金を教えてください:0 皆さんの所持金の平均は 200.0 円です |
解答④|入力した数値を加算した平均値の求め方
これは生徒の方から頂いた解答例ですが、紹介させて頂きます。
In[]
1 2 3 4 5 6 7 8 9 10 | total_money = 0 h_count = 0 while True : money = int(input("あなたの所持金を教えてください:")) if money == 0: break total_money += money h_count += 1 avarage = total_money/h_count print("皆さんの所持金の金額の平均は",avarage,"円です") |
Out[]
1 2 3 4 5 | あなたの所持金を教えてください:300 あなたの所持金を教えてください:200 あなたの所持金を教えてください:100 あなたの所持金を教えてください:0 皆さんの所持金の金額の平均は 200.0 円です |
決してコードが短ければ良いというわけではありませんが、様々なコードの記載方法があります。
色々な方法を試して頂けますと幸いです。
また、もし理解できない箇所があったり、不明な点があればお問い合わせフォームよりご質問頂ければ幸いです。
今回は以上となります。