見出し画像

多分誰でもできるPython入門

私はプログラミングを始めたばかりの者です。
一応有料にしていますが、全部読めます。

少しでも参考になったり、勉強になったりしたら、「安い教科書代くらい」だという気持ちとして購入してくれるとかなり嬉しいです。

私も、何回も何回もプログラミングに心を折られてきました。
そんな私が初心者に向けてnoteで入門書的なモノを頑張って書いてみたので参考になればと思います。

プログラミングの参考書は、、なかなか高いです。
続けられるか不安になりながら買いたくないものです。
参考書を買う前に、このnoteで先に学んでも遅くはないかと思います。
内容が気に食わなければ、残念ですがそのままこのページを閉じていただいて構いません。。

個人的には専門用語は少なくし、理解はしやすいかなと思っています。
このnoteを一周してみてプログラミングに向いてるか向いていないか判断しても良いかと思います。
プログラミングを始めるキッカケにもなってくれると嬉しいです。

簡単な単語帳を作りながら一つの流れとして学べるように書いてみたので楽しんでもらえれば幸いです。

このnoteの主な目的
 ・[変数][配列][辞書]を覚える
 ・[if文]を使えるようにする
 ・[for文]を使えるようにする

このnoteの主な対象者
・プログラミングの入門書・参考書を購入を考えている方
・プログラミングを今から少しでもやってみたいと考えている方
・プログラミングに心折られたけど立ち直りたい方(もう一回頑張ってみよう)
・独学でプログラミングを学んでみたい方
・かるーく基礎を学びたい方

★目次
▼なぜPythonか
▼1.基礎編
  ・1-1 文字の表示と計算
  ・1-2 代入してみよう(変数)
  ・1-3 一括代入(配列)
  ・1-4-1【実戦編】絶対大吉の出るおみくじを作ってみよう
  ・1-4-2【実戦編】普通のおみくじを作ってみよう
  ・1-5 配列の足し算
▼2.辞書型
  ・2-1使いこなせば便利
  ・2-2【実践編】プログラムで単語帳を作ってみよう
▼3.条件分岐文(if文)
  ・3-1 if文(もしも〜何々ならば〜)
  ・3-2【実践編】単語帳をバージョンアップさせよう
▼4.繰り返し文
  ・4-1 for文(同じことはプログラムに任せよう)
  ・4-2 【実践編】同じ処理は何回も書かずに、コードをスマートにしよう
▼5.メソッドの使用
  ・5-1 メソッドの作り方
  ・5-2 【実践編】単語帳のコードをメソッドを使ってコンパクトにしよう
▼6.さいごに

▼なぜpythonか

Pythonはライブラリが充実したプログラミング言語です。
ライブラリとはザックリ言うと誰かが作った「武器庫」のようなものです。その「武器庫」が充実しています。
その武器庫をinstallすれば自由に使えます。
後ほどこのnoteにて例が出てきますので、ここでは説明を省かしていただきます。

本noteにしよううするコードはシンプルに構成されていますので、初心者にとってもハードルは低めとなります。

▽Pythonは主に下記のような特徴を持っています
・Webサイトのデータを収集するのが得意(スクレイピング)
・機械学習やディープラーニングが得意(データ分析)
・AI(まだまだ学習が必要)
・コンパクトにシンプルにコードを書ける(初心者にとっつきやすい)

コードを書いていく前にここでPythonを動かす環境について説明します。

このnoteではCloud9というクラウド環境で利用できるサービスで説明していきたいと思います。統合開発環境(IDE)と呼ばれるもので、様々な便利機能が集約されています。

Pythonの他に、Cloud9に対応している言語であれば気軽にプログラミングを始められます。

私も参考にさせていただいたURL貼っておきますので、まだ登録していない方はそちらより登録をお願いします。

参考URL:https://www.sejuku.net/blog/385

必ずしもCloud9じゃなくてもOKです。他、Pythonの環境ある方は独自で準備のほどお願いします。

では、準備できた方は進めていきましょう!!!

▼1 基礎編

プログラミングを書く前にファイルを作らなければなりません。

Cloud9のメニューバーから[file→New File]の順にクリックを進め新しいファイルを作成します。

このnoteでは3種類のファイルを作る予定をしていますので最初に作っておきましょう。

▽ファイル名と用
test.py→主に基礎的なプログラミングを書いていきます。
omikuji.py→おみくじに関するプログラミングをここに書いていきます。
word_book.py→単語帳に関するプログラミングをここに書いていきます。

画像50

ショートカットキーで保存します。windousなら[ctrl+s]、macなら[command+s]となります。ショートカットキーを押せば下のような画面になるはずなので保存してみてください。

下の図はすでに[test.py][omikuji.py]を保存し、[word_book.py]を保存している途中となります。そのままSaveを押せば保存されます。

04保存後_2

後からでもファイル名の変更は可能です。変更したいファイル名を一度選んで左クリックだけで編集できるようになります。ファイル名を間違えたりする場合もありますので覚えておきましょう。

05名前の変更

これで下準備は終わりです。それでは実際に書いていきましょう!!

1-1 文字の表示と計算

上の図の「ここにコードを書いていく」に入力してみて下さい。

print("Hello Pyhotn")
06文字入力


赤枠に下記打ち込んで下さい。pythonファイルを実行するコマンドとなります。

python test.py

こういう感じで出力されればOKです。

08文字出力

表示されましたでしょうか?表示されない方は下記ご確認下さい。

▽表示されない場合確認事項
 ・ファイル名が間違っていないか
 ・1行目のコードが間違っていないか
 ・ファイル実行コマンドが間違っていないか
 ・保存されているかどうか

ここで簡単にプログラムの実行の流れを簡単に確認しておきましょう!!

画像20

今回は文字の出力でしたが次は数字をを打ち込んでみましょう。
今回は一気に2行いきます。()の中でそのまま計算して出力してみましょう

print(3)
print(3+3)

下の図のようになればOKです。

11数字の出力と計算−2

コードは上から順に実行されていきます。出力も上から表示となります。

そして、お気付きの方もいると思いますが、文字と数字の出力には条件があります。

▽出力条件
 ・文字の場合(文字列)→" "(ダブルクォーテーション)で挟む
   ※シングルクォーテーションでも可
 ・数字の場合(数値)→特になし。
   ※ただし、" "(ダブルクォーテーション)で挟むと文字列となる。

この調子で数値の計算をしましょう。その前に記号を記載します。

▽計算
 ・+ →足し算
 ・- →引き算
 ・* →掛け算
 ・/ →割り算
 ・% →割った数のあまり

それでは、それぞれ記号を使ってコードを書いていきましょう。ついでに先ほど書いた3行のコードはコメントアウトしましょう。コメントアウトするとそのコードは無視されて実行されません。

コメントアウトしたいコードに # を付け足すだけです。サンプルコード記載しますので打ち込んでみてください。

# print("Hello Pyhotn") # コメントアウト
# print(3) # コメントアウト
# print(3+3) # コメントアウト
print(8+3) # 足し算
print(8-3) # 引き算
print(8*3) # 掛け算
print(8/3) # 割り算
print(8%3) # 8÷3のあまり

コメントアウトは他にもメモを残す役割があります。うまくコメントアウトを使っていきましょう。下記のようにな出力なっていればOKです。余力のある方は試しに他の計算もやってみて下さい。

12-2出力

ここで注意点があります。スペースは半角にしなければなりません。エラーのでた方は直してみてください。

12-1コメントアウトとその他の計算1

次は少し複雑な計算をしてみましょう。
中身の数字(80+90+50+60)は、ある教科の点数です。4で割ることで平均点を出力します。

print((80+90+50+60)/4)
13平均点出力

これではどの教科がどの点数か分からないです。分かりやすくするために、この点数に名前をつけていきましょう。

・1-2 代入してみよう(変数)

この名前をつけていくことを[変数]といいます。それでは実際に書いていきましょう。

japanese = 80
math = 90
english = 50
music = 60

イコールで結ぶと変数にすることができます。一番上のコードを例にすると「japaneseという変数に80を代入する」と言います。

ではそのまま変数で計算してみましょう

print((japanese+math+english+music)/4)
14代入とその足し算

結果はどうでしたでしょうか。先ほどと同じになったのではないでしょうか。これで、どの科目がどの点数か分かりやすくなったのではないでしょうか。ただ、、、

これだと教科が増えてくるたんびに、変数が必要になってきてしまってい、無駄にコードが長くなってしまいます。

japanese = 80 # 国語
math = 90 # 算数
english = 70 # 英語
music = 60 # 音楽
history = 65 # 歴史
programing = 40 # プログラミング
html = 50 # HTML
print((japanese+math+english+music+history+programing+html)/7) # 7科目平均点

出力結果は下記となります。

15_7つのh変数

実はこれ、代入だけなら配列を使うと一行で書くことができます。

  ・1-3 一括代入(配列)

変数に複数のデータを一括で入れることができます。これを[配列]と言います。では、書いてみましょう。

my_scores = [80, 90, 70, 60, 65, 40, 50]

my_scoresという変数に複数の点数が入りました。ここで少し配列の説明をします。

画像13

配列は左から管理しています。この[0]から始まるということをしっかり覚えててください。

では配列を使う練習をしてみましょう。

先ほど代入したmy_scoresを出力していきます。

print(my_scores[0]) # 80の出力
print(my_scores[1]) # 90の出力
print(my_scores[5]) # 40の出力
print(my_scores[7]) # エラー
18配列の出力

あえてエラーの出るコードも書いてみました。このmy_scoresという配列には[0]〜[6]の7つのデータが入っています。[7]がないのでエラーになるはずです。

19配列の出力2えらー

余裕のある方は配列に[7]番目のデータを増やして実行し、確認してみてください。

・1-4-1【実戦編】絶対大吉の出るおみくじを作ってみよう

どうでもいいコードをずらずら書いても仕方ないです。
気分転換におみくじを作ってみましょう!!

一番初めに作成した[omikuji.py]と言うファイルに切り替えて下さい。
タブで切り替えることができます。

21おみくじの書く場所

まず、コードを書く前におみくじってなんだっけ??ということから考えます。色んなおみくじもあると思いますが、ここでは下記のように定義したいと思います。

▽このnoteにおけるおみくじの定義
 ・一つの箱から一回くじを引く
 ・ランダムに[大吉][中吉][小吉][大凶]のどれかが出る

箱を配列に見立ててコードを書いていきます。まずは[大吉]が出るおみくじを作ります。
配列の作り方と出力の仕方を覚えている人はサンプルコードを見ないで自分で書いてみて下さい。

omikuji = ["大吉","中吉","小吉","大凶"]
print(omikuji[0])

そして実行するファイルが変わったので実行コマンドも変わります。

python omikuji.py
24omikuji実行コマンド

なぜ[大吉]だけ出力されるのかはお分かりですよね?
[omikuji]という配列の[0]番目[print()]しているからです。
同じ要領で[中吉][小吉][大凶]も出力してみて下さい。
あえてコードを載せるのは控えます。

これで[大吉]だけの出るおみくじ完成です。2行でコードが書けるなんてシンプルですよね。次はランダムでおみくじを表示できるようにしましょう。

そしてお待ちかねのライブラリ(武器庫のようなもの)を使用します。

1-4-2【実戦編】普通のおみくじを作ってみよう

ボリュームがありますが、頑張っていきましょう。
心が折れそうな時は無理に打ち込むのはやめて、コピペでもOKです。
過程はどうであれ最後までやって、流れを掴んでみましょう。

randomという武器庫を使います。この武器庫を使うには[import]しなければなりません。書き方はこうです。

import random

基本的にimportは上から書きますので1行目に書いて下さい。

次にこの武器庫から武器を選びます。武器の選び方はこう書きます。

random.choice()

このchoice()は配列からランダムに1つだけ選んでくれます。choice()意外にもたくさんありますので調べて使ってみて下さい。

それではrondom.choice()を使う流れを確認してみましょう!!

22インポート

下記がおみくじの最終的なコードです。3行でおみくじができるなんて簡単ですね。配列に代入する項目を増やせば、さらに多くのおみくじが引けるようになります。余裕のある方はやってみて下さい。

import random
omikuji = ["大吉","中吉","小吉","大凶"]
print(random.choice(omikuji))

何回か実行してみて下さい。ランダムで表示されるはずです。

23実行結果

・1-5 配列の足し算

それではまた[配列]に戻りますのでファイルを[test.py]に切り替えましょう。ここからまた実行コマンドが変わりますので気をつけて下さい。

では、配列の足し算はどうするのでしょうか。
先ほど変数同士で足し算したのを覚えていますか?
要領はその変数同士の足し算と同じです。

それではコードを確認しみましょう。

print((my_scores[0]+my_scores[1]+my_scores[2]+my_scores[3]+my_scores[4]+my_scores[5]+my_scores[6])/7)

今書いたコードだけ出力したいので、先ほどのコードはコメントアウトします。もしくは消してもOKです。

20-1配列同士の足し算

出力結果は65.0になってればOKです。

▼2.辞書型

ただ、これではまたどれがどの点数か分からなくなってしまいました。そこで次は[辞書]という配列の中のデータに一つ一つに名前をつける方法があります。

・2-1使いこなせば便利

それでは、この分かりづらい配列に名前をつけていき管理しやすくしましょう。ここから少しずつややこしくなってきますが、この辞書は使いこなせれば便利なので頑張っていきましょう!!

説明の前にサンプルコードを書いてみましょう!!

my_scores = {"国語":80, "算数":90, "英語":70, "音楽":60, "歴史":65, "プログラミング":40, "HTML":50}

これでmy_scoresという変数に科目名と点数を紐付けて一括で代入することができました。次は国語の点数を出力してみましょう!!

print(my_scores["国語"])

これで80の数字が出ればOKです。[0]のような配列番号で管理するより分かりやすくなったのではないでしょうか。他の科目でも出力してみて下さい。

ここで辞書について説明しようと思います。キー名とバリューという言葉を覚えて下さい。{  }なみカッコで格納したいデータを挟み、:(コロン)でキーとバリューを繋ぎます。日本語で書くと下記のような形になります。

▽日本語での表記
 ・辞書名 = {キー名 : バリュー, キー名 : バリュー,・・・・}

画像23

ちなみにmy_scoresに入っているデータを全部出力したい時はこうなります。
合わせて全教科の平均点出力と同時にコードを書いてみて下さい。普通の配列の平均の計算と要領は同じです。

print(my_scores)
print((my_scores["国語"]+my_scores["算数"]+my_scores["英語"]+my_scores["音楽"]+my_scores["歴史"]+my_scores["プログラミング"]+my_scores["HTML"])/7)

結果はこういう下の図の感じに出ればOKです。いろいろとmy_scoresの中身を変えたりして試してみて下さい。

26辞書の出力結果

・2-2【実践編】プログラムで単語張を作ってみよう

さて、いろいろと覚えてきたところで単語帳を作っていきたいと思います。ファイルを[word_book.py]に切り替えて下さい。ファイルの実行コマンドも変わるので気をつけて下さい。

では、ここで作る単語帳の定義を決めておきましょう。

▽このnoteにおける単語帳の定義
 ①単語を1つ登録する
 ②その単語の意味を登録する
 ③登録した単語を見ることができる

最低限単語帳としてこの3つはできるようになりましょう。

単語を登録するためにはパソコンのキーボードから文字を入力しなければなりません。下記サンプルコードを書いて実行してみて下さい。

print("英単語を入力してください")
word = input() # input()で入力を受け取る
print(word + "です")

ここで新しい[input()]という処理が出てきました。これで入力された文字を受け取ることができます。受け取るだけでは使えないので変数に格納します。

01単語を入力

実行するコマンドは分かりますか?[test.py]や[omikuji.py]を実行した要領と同じになります。

python word_book.py

実行結果は下の図のようになればOKです。
[英単語を入力して下さい]と出力されたあと、好きな単語を入力して下さい。私はdogとしました。

02出力結果

次はサンプルコードを見ずに、単語の意味をキーボードから受け取って表示してみて下さい。単語を入力して表示した要領と同じです。

単語の意味を表す変数は[mean]とし、出力後に少し見やすいように工夫してみました。

print("英単語を入力してください→", end="")
word = input()
print("英単語の意味を入力して下さい→", end="")
mean = input() 

print("---入力された単語---")
print("【英単語】", end="")
print(word)
print("【意味】", end="")
print(mean)

ここで[end=""]という処理が出てきましたが、これは改行をせずに表示してくれます。出力したい文字の後に,(カンマ)で区切って使用します。

このコードの出力は下の図のようになります。

03出力結果2

次は辞書を使って英単語の管理をしていきたいと思います。この英単語と辞書の相性は抜群です。キーを利用してバリューに格納していきます。

説明の前にコードを書いてみましょう!!

word_book = {"英単語":"未設定","意味":"未設定"}

print("英単語を入力してください→", end="")
word_book["英単語"] = input()
print("意味を入力してください→", end="")
word_book["意味"] = input()

print("---入力された意味---")
print("【英単語】", end="")
print(word_book["英単語"])
print("【意味】", end="")
print(word_book["意味"])

代入先を辞書に変えただけなので出力結果は先ほどと変わってないはずです。

03出力結果2

少しややこしい事をやっていますが、先ほど書いたコードの[word = input()]の代入とさほど変わりません。

ここで代入を辞書にするとメリットがあります。
今後、英単語をどんどん登録できる仕様にしなければなりません。ここで変数に代入すると単語を登録するたんびに変数を用意しなければなりません。一番最初にやった科目の数だけコードが長くなってしまいます。

16貼り付け用

まだ1つしか登録できませんが後々何回も登録できるようになります。

ではここで辞書への代入の流れを確認しましょう。

全部の科目を辞書に格納した後を覚えていますか?キーの[国語]を指定をして出力の処理をすると[80]が表示されました。代入する時も同じ要領になります。

25辞書

今回の辞書の初期設定はキーを[英単語]バリューを[未設定]にしていました。
キーを指定してそれに代入すると上書きされて代入されます。

04辞書での格納

流れを確認したところで次は2つの単語を登録できるようにしてみましょう。辞書と配列を組み合わせることで複数の単語を登録できるようになります。

word_book = [{"英単語":"未設定","意味":"未設定"},
           {"英単語":"未設定","意味":"未設定"}]

print("1つめの英単語を入力してください→", end="")
word_book[0]["英単語"] = input()

print("1つめの意味を入力してください→", end="")
word_book[0]["意味"] = input()

print("---1つめの意味---")
print("【英単語】", end="")
print(word_book[0]["英単語"])
print("【意味】", end="")
print(word_book[0]["意味"])

print("2つめの英単語を入力してください→", end="")
word_book[1]["英単語"] = input()
print("2つめの意味を入力してください→", end="")
word_book[1]["意味"] = input()

print("---2つめの意味---")
print("【英単語】", end="")
print(word_book[1]["英単語"])
print("【意味】", end="")
print(word_book[1]["意味"])

少し長くなってしまいましたが、仕組み自体はシンプルです。
配列の格納方法は覚えていますか?今回はその配列の中に辞書が入っています。そして、配列の呼び出し方も同じです。配列の[0]番目の[英単語]というキーを呼び出せばいいだけです。

画像30

では、出力結果を見てみましょう。単語は自分で決めてOKです。

06辞書の2つ目の単語出力

これで2つまで単語を保存できるようになりました。余力のある方は3つ目の登録をできるようにしてみて下さい。2つ目同様に配列の中身を増やして、代入と出力の処理を増やすだけです。

▼3.条件分岐文 (if文)

今回作成する単語帳の仕様を覚えていますか?

▽このプログラミングにおける単語帳の定義
 ①単語を1つ登録する
 ②その単語の意味を登録する
 ③登録した単語を見ることができる

①と②は配列と辞書を組み合わせて登録することができました。
次は③の登録した単語を見るためのコードを書いていこうと思います。

・3-1 if文(もしも〜何々ならば〜処理)

その前に[if文]というものを覚えなければなりません。

ここから少しだけ単語帳作成から離れてif文の使い方を説明しようと思います。ファイルを[test.py]に切り替えて下さい。

まずは簡単なコードを書いてみましょう。

num = 5
if num > 2:
   print("numは2よりも大きいです")

日本語で説明するとこんな感じのコードです。

もしもnumが2以上なら「numは2よりも大きいです」と表示します。

表示はこうなります。

07分岐文を出力

これはnumが5だからです。numを1にして再度実行してみて下さい。何も出力されないはずです。

ここでif文の流れを確認しましょう。
[if 条件 :](コロン)でif文を書き始め、条件を満たしている時の処理はインデント(段落下げ)により処理してくれます。
※[tab]キーを押せばインデントしてくれます。

画像33

コロンとインデント忘れがちになりますのでエラーが出てしまった場合は確認しましょう。

また、条件の書き方を下記まとめましたのでご確認ください。

▽条件文書き方
 ・a == b aとbが等しい
 ・a  != b aとbが等しくない
 ・a >= b aはb以上
 ・a   >  b aはbより大きい(等しいは含まない)
 ・a <= b aはb以下
 ・a   <  b aはbより小さい(等しいは含まない)

さらに[or]や[and]で条件と組み合わせることで複雑な条件の処理も行うこともできますが今回のnoteでは使わないので割愛します。

次は複数の条件の処理を行うコードを書いていきます。

num = 3
if num < 5:
   print("numは5より小さいです")
elif num >= 10:
   print("numは10以上です")
else:
   print("numは5以上、10より小さい")

いろいろとnumの数字を変えてみて下さい。処理される内容が違います。

▽numの数字を変えてみたら
 ・num = 3   →numは5より小さいです
 ・num = 12 →numは10以上です
 ・num = 6  →numは5以上、10より小さい

ここで新しい[elif]が出てきました。使い方はif文と同じです。
流れとして、一番最初の[if]の条件が当てはまらない場合、次の[elif] で処理を行います。この[elif]は何回でも使うことが可能です。[else]は全ての条件に当てはまらない時に実行される処理になります。

11elifの使い方

これでなんとなくif文を理解できたはずです。それではまた単語作成へと戻り、if文を使って③登録した単語を見ることができる。という単語帳の定義を満たしましょう。

・3-2【実践編】単語帳をバージョンアップさせよう

先ほど学んだif文を使って単語の追加機能と単語の確認機能を追加していきましょう。[word_book.py]にてコードを書いていきたいと思います。

▽バージョンアップ
・[show]を選択すると保存した単語を確認できる
・[add]を選択すると単語を保存できる

それでは、コードを書いていきましょう。まずはif文を使って[単語を追加]と[単語の確認]の分岐をしたいと思います。これまで書いてきたコードはコメントアウトか削除して下さい。

print("【単語帳を起動しました】")
print("【show】英単語を確認する")
print("【add】英単語を追加する")
print("showまたはaddを入力してください→", end="")
mode = input()
if mode == "show":
   print("【英単語確認を選択しました】")
elif mode == "add":
   print("【英単語追加を選択しました】")
else:
   print("エラーです。プログラムを終わります")

[show]、[add]、[それ以外]の入力をしてみて下さい。下の図のようになればOKです。

13if文出力

次はそれぞれの処理を行うコードを書いていきます。それぞれの処理を日本語で書くとこういう感じです。

▽それぞれの処理
 ・[show]を選択→print()で出力
 ・[add]を選択→配列に格納

それぞれの処理を確認したところで、これまで書いてきたコードを思い出しながら書いていきましょう。少し長いですが慣れるために自力で書いてみて下さい。自分なりに#でコメントを残しながらコードを書くと覚えやすくなります。

word_book = [{"英単語":"未設定","意味":"未設定"},
           {"英単語":"未設定","意味":"未設定"},
           {"英単語":"未設定","意味":"未設定"}]
print("【単語帳を起動しました】")
print("【show】英単語を確認する")
print("【add】英単語を追加する")
print("showまたはaddを入力してください→", end="")

mode = input()

if mode == "show":
   print("【英単語確認を選択しました】")
   print("現在英単語はありません")
elif mode == "add":
   print("【英単語追加を選択しました】")
   print("1つめの英単語を入力してください→", end="")
   word_book[0]["英単語"] = input()
   print("1つめの意味を入力してください→", end="")
   word_book[0]["意味"] = input()
else:
   print("エラーです。プログラムを終わります")

print("【単語帳を起動しました】")
print("【show】英単語を確認する")
print("【add】英単語を追加する")
print("showまたはaddを入力してください→", end="")

mode = input()

if mode == "show":
   print("【英単語確認を選択しました】")
   print("1.")
   print(word_book[0]["英単語"])
   print(word_book[0]["意味"])
   print("2.")
elif mode == "add":
   print("【英単語追加を選択しました】")
   print("2つめの英単語を入力してください→", end="")
   word_book[1]["英単語"] = input()
   print("2つめの意味を入力してください→", end="")
   word_book[1]["意味"] = input()
else:
   print("エラーです。プログラムを終わります")

print("【単語帳を起動しました】")
print("【show】英単語を確認する")
print("【add】英単語を追加する")
print("showまたはaddを入力してください→", end="")

mode = input()

if mode == "show":
   print("【英単語確認を選択しました】")
   print("1.")
   print(word_book[0]["英単語"])
   print(word_book[0]["意味"])
   print("2.")
   print(word_book[1]["英単語"])
   print(word_book[1]["意味"])
elif mode == "add":
   print("【英単語追加を選択しました】")
   print("3つめの英単語を入力してください→", end="")
   word_book[2]["英単語"] = input()
   print("3つめの意味を入力してください→", end="")
   word_book[2]["意味"] = input()
else:
   print("エラーです。プログラムを終わります")

まずは[add]→[add]→[show]の順で処理を行いたいと思います。下の図のようになればOKです。

14add_add_show英単語出力

次は[show]→[add]→[show]の順で処理を行ってみましょう。この単語帳の欠点が浮き彫りになります。

15show_add_show出力結果

これではまだ単語帳の定義には程遠いです。このコードの欠点をあげるとしたら下記のようなものがあります。

▽欠点
 ・単語を最大3つしか登録できない
 ・1が登録されていないのに2が先に登録されてしまうことがある
 ・似たようなコードを何回も書いている

次はこの欠点の解消を行います。

▼4.繰り返し文(for文)

このfor文を使えば何回も同じ処理を書かなくて済むようになります。そして何回も単語を登録できるようになります。

for文を書く前に[test.py]に切り替えて、復習も兼ねて5回[おはよう]と出力してみて下さい。

print("おはよう")
print("おはよう")
print("おはよう")
print("おはよう")
print("おはよう")

5回ならまだ簡単ですよね。では次は100回出力してみて下さい。

print("おはよう")
print("おはよう")
print("おはよう")
print("おはよう")
print("おはよう")
・
・
・

上のコードは書かなくていいです。こんなのダルくて無理ですよね。

・4-1 for文(同じことはプログラムに任せよう)

そこでfor文の登場です。下記コード書いて実行してみて下さい。

for i in range(5):
   print("おはよう")

2行で5行の出力ができます。次はrange(5)の中の数字を100にしてみて実行してみて下さい。100回出力されます。

今度は数字でfor文を作ってみましょう。[おはよう]を[i]にするとどうなるでしょうか。

for i in range(5):

   print(i ,end="")
   print("回目の繰り返しです")

0〜4回目の繰り返しとでればOKです。

16for数

ここで軽くfor文の流れをみましょう。

画像39

▽関数と引数(ひきすう)
 ・関数 何かしらの規則に従った機能を持つ塊
 ・引数 関数に渡す何かしらの入力値

関数と引数は慣れないと理解が難しいです。かという私もやっと慣れ始めた感じです。

今回使用した[range()]は関数となります。( )の中に数字を入れることでその数字を含まない0〜の連番を生成してくれます。range(5)の場合は0〜4までの連番をiに代入しながら処理してくれます。range(100)なら0〜99までの連番をiに代入して処理となります。

実は今までも関数を使っています。その関数とは[print()]です。
( )の中に引数として文字列か数値を入れることにより画面上にその ( )の中の文字や数字を出力してくれています。

では次は配列を使用してfor文で処理をしてみましょう。
下記のコードはひとまず練習なので[test.py]で書いてみましょう。

word_book = [{"英単語":"dog","意味":"犬"},
           {"英単語":"cat","意味":"猫"},
           {"英単語":"bird","意味":"鳥"}]
for word in word_book:
   print("【英単語】", end="")
   print(word["英単語"])
   print("【意味】", end="")
   print(word["意味"])

word_bookには初期設定として先にデータを格納し、for文で[word]の変数に一つずつword_bookに入れて、そのデータの数だけ出力してくれます。

20for文配列

[word]とう配列に[word_book]の配列番号が[0]→[1]→[2]と代入されていき、それぞれの持っているキー名[英単語]で[dog]→[cat]→[bird]と出力されていきます。キー名[意味]も同じ流れで出力されていきます。
このような感じで出力されていればOKです。

21for配列文出力

・4-2 【実践編】同じ処理は何回も書かずに、コードをスマートにしよう

では次はこれを[word_book.py]に組み込んでみましょう。

確認のため前回までのコードを載せます。

word_book = [{"英単語":"未設定","意味":"未設定"},
           {"英単語":"未設定","意味":"未設定"},
           {"英単語":"未設定","意味":"未設定"}]
print("【単語帳を起動しました】")
print("【show】英単語を確認する")
print("【add】英単語を追加する")
print("showまたはaddを入力してください→", end="")

mode = input()

if mode == "show":
   print("【英単語確認を選択しました】")
   print("現在英単語はありません")
elif mode == "add":
   print("【英単語追加を選択しました】")
   print("1つめの英単語を入力してください→", end="")
   word_book[0]["英単語"] = input()
   print("1つめの意味を入力してください→", end="")
   word_book[0]["意味"] = input()
else:
   print("エラーです。プログラムを終わります")

# -----------------ここから下はほぼ同じ処理なので削除-----------------

print("【単語帳を起動しました】")
print("【show】英単語を確認する")
print("【add】英単語を追加する")
print("showまたはaddを入力してください→", end="")

mode = input()

if mode == "show":
   print("【英単語確認を選択しました】")
   print("1.")
   print(word_book[0]["英単語"])
   print(word_book[0]["意味"])
   print("2.")
elif mode == "add":
   print("【英単語追加を選択しました】")
   print("2つめの英単語を入力してください→", end="")
   word_book[1]["英単語"] = input()
   print("2つめの意味を入力してください→", end="")
   word_book[1]["意味"] = input()
else:
   print("エラーです。プログラムを終わります")

print("【単語帳を起動しました】")
print("【show】英単語を確認する")
print("【add】英単語を追加する")
print("showまたはaddを入力してください→", end="")

mode = input()

if mode == "show":
   print("【英単語確認を選択しました】")
   print("1.")
   print(word_book[0]["英単語"])
   print(word_book[0]["意味"])
   print("2.")
   print(word_book[1]["英単語"])
   print(word_book[1]["意味"])
elif mode == "add":
   print("【英単語追加を選択しました】")
   print("3つめの英単語を入力してください→", end="")
   word_book[2]["英単語"] = input()
   print("3つめの意味を入力してください→", end="")
   word_book[2]["意味"] = input()
else:
   print("エラーです。プログラムを終わります")

このコード冷静になって見てみると[確認]と[追加]を繰り返し処理しているだけです。# -----------------ここから下はほぼ同じ処理なので削除-----------------から下のコードを消して、for文使って書き換えてみると下記のようになります。

word_book = [{"英単語":"未設定","意味":"未設定"},
           {"英単語":"未設定","意味":"未設定"},
           {"英単語":"未設定","意味":"未設定"}]

print("【単語帳を起動しました】")
print("【show】英単語を確認する")
print("【add】英単語を追加する")
print("showまたはaddを入力してください→", end="")

mode = input()

if mode == "show":
   print("【英単語確認を選択しました】")
   for word in word_book:
       print("【英単語】", end="")
       print(word["英単語"])
       print("【意味】", end="")
       print(word["意味"])

elif mode == "add":
   print("【英単語追加モードを選択しました】")
   print("1つめの英単語を入力してください→", end="")
   word_book[0]["英単語"] = input()
   print("1つめの意味を入力してください→", end="")
   word_book[0]["意味"] = input()

else:
   print("エラーです。プログラムを終わります")

どこにfor文が使われているか確認して見て下さい。
実行して[show]を選ぶと全て未設定で出力されるはずです。
今まではイメージしやすく配列の[word_book]の中身を書いていましたがこの状態だと未設定の出力もされてしまって見栄えが悪いので、配列の中身を初期化して空にしましょう。

その代わり配列を空にしてしまうと[add]の処理が変わってしまいます。

▽配列の保存手段
 ・配列の設定がすでに入っている場合→上書き保存(今までの処理)
 ・配列を初期化し空っぽの状態→新規追加(変更する処理)

[add]の変更箇所も確認しながらコードを書いてみて下さい。

word_book = []

print("【単語帳を起動しました】")
print("【show】英単語を確認する")
print("【add】英単語を追加する")
print("showまたはaddを入力してください→", end="")

mode = input()
if mode == "show":
   print("【英単語確認を選択しました】")
   for word in word_book:
        print("【英単語】", end="")
        print(word["英単語"])
        print("【意味】", end="")
        print(word["意味"])

elif mode == "add":
   print("【英単語追加モードを選択しました】")
   print("英単語を入力してください→", end="")
   word = input()
   print("意味を入力してください→", end="")
   mean = input()
   word_book.append({"英単語":word,"意味":mean})

else:
   print("エラーです。プログラムを終わります")

これで実行して[show]を選んでも何も表示されなくなりました。
次はその副作用として新しい処理[.append()]が出てきたので説明したいと思います。

▽新しい処理[.append()]
 ・配列.append(引数)
   →引数を配列に追加してくれる

画像42

word_book.append({"英単語":word,"意味":mean})

このコードは[word_book]という配列に{"英単語":word,"意味":mean}を追加しています。ちなみに[word]と[mean]はinput()によってキーボード入力によって得た英単語と意味がそのまま入ります。

25addの処理input

これで実行してみて[show]と[add]の両方を選んでみて下さい。
下の図のようになっていればOkです。

26add_show出力

これでもう単語帳は9割以上できています。もう少しですので頑張りましょう!!

これだと最初の[show]か[add]の選択で終わってしまいます。
for文を使い100回選択できるようにすればいいだけです。

2行目にfor文を入れて100回繰り返して下さい。
コロンと繰り返したい処理はインデントを忘れずに。

word_book = []
print("【単語帳を起動しました】")
for i in range(100):
   print("【show】か【add】選んでください")
   print("【show】英単語を確認する")
   print("【add】英単語を追加する")
   print("showまたはaddを入力してください→", end="")
    
   mode = input()
   if mode == "show":
    
       for word in word_book:
            print("【英単語】", end="")
            print(word["英単語"])
            print("【意味】", end="")
            print(word["意味"])
    
   elif mode == "add":
       print("【英単語追加モードを選択しました】")
       print("英単語を入力してください→", end="")
       word = input()
    
       print("意味を入力してください→", end="")
       mean = input()
       word_book.append({"英単語":word,"意味":mean})
    
   else:
       print("エラーです。プログラムを終わります")
       break

何回か[show]と[add]を繰り返してみて下さい。どちらもうまく処理してくれてるなら完成です。色々試してみて下さいね。

27最後の出力

最初と比べて、結構短い行で完成したのではないでしょうか。
ただ、このコードをまだすっきりさせる方法があります。

▼5.メソッド(関数)の使用

メソッドとは平たくいうと「処理の塊」です。そんなこと言っても分かりづらいのでfor文の例文で書いたコードをそのままメソッド化してみましょう。

・5-1 メソッド(関数)の作り方

メソッド化するためには基本この形で書きます。メソッドもコロンとインデントが必要になります。( )は引数を受け取ることができます。

▽メソッドの書き方
def メソッド名():
    処理内容(インデント必須)

このコードを覚えていますか?[おはよう]を2行で5回出力するコードです。

for i in range(5):
   print("おはよう")

このコードをメソッド化するにはこう書きます。メソッド名は私が勝手に決めました。

def hello():
   for i in range(5):
       print("おはよう")
   
hello()

次は引数を渡せるように改良してみましょう。

def hello(name):
   
   for i in range(5):
       print(name + "おはよう")
   
hello("python")

初心者でこのコードをみて意味がわかるなら才能ありです。
結果はこうなります。

03メソッド化引数出力

[hello( )]の( )の中に引数を渡すとメソッドを通して[print(name)]まで受け渡してくれます。慣れるまで大変ですが下記処理の流れとなります。

02メソッド化引数

この引数を利用して計算するコードを書いてみましょう。

def sum(a,b):
   return a+b

c = sum(5,15)
print(c)

出力結果は[20]になります。下の図にて流れを確認しましょう。

画像48

基本をある程度押さえたところで単語帳のメソッド化をしてみましょう。
もう少しです。頑張りましょう。

・5-2 【実践編】単語帳のコードをメソッドを使ってコンパクトにしよう

まずは[show]か[add]か選ぶ箇所をまとめてメソッドにしてみましょう。

# -------メソッド(呼び出しまで処理されない)--------

# fshowかaddか選ぶメソッド
def select_mode():
   print("【show】か【add】選んでください")
   print("【show】英単語を確認する")
   print("【add】英単語を追加する")
   print("showまたはaddを入力してください→", end="")
   return input()

# -------これより下処理される--------

word_book = []
print("【単語帳を起動しました】")
for i in range(100):
   mode = select_mode() # メソッド呼び出し

   if mode == "show":
       
       for word in word_book:
            print("【英単語】", end="")
            print(word["英単語"])
            print("【意味】", end="")
            print(word["意味"])

   elif mode == "add":
       print("【英単語追加モードを選択しました】")
       print("英単語を入力してください→", end="")
       word = input()
    
       print("意味を入力してください→", end="")
       mean = input()
       word_book.append({"英単語":word,"意味":mean})
    
   else:
       print("エラーです。プログラムを終わります")
       break

くどいかもしれませんが、また流れを確認してみましょう!!

08メソッド化の流れ

呼び出されるまでメソッドは処理されませんので---これより下処理される---にて[select_mode()]を呼び出し[mode]に代入します。

▽メソッドを呼び出して代入までの流れ
 ①[select_mode()]を呼び出す
 ②[select_mode()]の処理が始まる。(処理は上から順に行われる )
 ③[input()]で得た文字を[return]にて[select_mode()]に返す
 ④返ってきた文字を[mode]に代入
 ⑤if文の処理に移行

次は[show]の処理と[add]の処理を行うメソッド化してみましょう。
ついでにエラーが出た時の処理もメソッドにしましょう。

# -------メソッド(呼び出しまで処理されない)--------

# showかaddか選ぶメソッド
def select_mode():
   print("【show】か【add】選んでください")
   print("【show】英単語を確認する")
   print("【add】英単語を追加する")
   print("showまたはaddを入力してください→", end="")
   return input()

# 単語を確認するメソッド
def show(word_book):
   for word in word_book:
        print("【英単語】", end="")
        print(word["英単語"])
        print("【意味】", end="")
        print(word["意味"])

# 単語を追加するメソッド
def add():
   print("【英単語追加モードを選択しました】")
   print("英単語を入力してください→", end="")
   word = input()
   print("意味を入力してください→", end="")
   mean = input()
   word_book.append({"英単語":word,"意味":mean})

# エラーした時のメソッド
def error():
   print("エラーです。プログラムを終わります")
   
# -------これより下処理される--------
word_book = []
print("【単語帳を起動しました】")
for i in range(100):
   mode = select_mode()
   
   if mode == "show":
       show(word_book) # showメソッド呼び出し
   elif mode == "add": # addメソッド呼び出し
       add()
    
   else:
       error() # erorメソッドの呼び出し
       break

この処理される部分は[メイン]と呼びます。メインのコード行数は11行で済みました。では、最後に各メソッドの流れをみていきましょう。

画像50

一見ややこしく見えますが、処理を分けているだけです。メソッドの理解もなかなか難しいです。たくさん使って慣れましょう。

これでコードを書くのは終わりです。お疲れ様でした。

▼6.さいごに

このnoteでお伝えしたかったのは[if文][for文]の使い方でした。これ以上進めちゃうと、余計にごちゃごちゃして分かりづらくなってしまいます。

今回得た知識を使ってみて何でもいいので作ることが大事です。[if文]と[for文]を使えば[じゃんけんをする]プログラムもできそうです。

そして、今回作ってみた単語帳の改善点はなんでしょうか。自分で考えて実装してみて下さい。何個目の単語を登録したとか、登録した単語を削除するとか、色々改善点はありそうです。

シンプルな単語帳でしたが、この延長上のものがあらゆるサービスとなっています。いろいろ理解して自分でコードを書くのは大変ですが、自分が思った通りに動けば何とも言えない快感がクセになるでしょう。

私もまだまだ学習中です。人生を豊かにできるようなプログラムを組めるようになるまでお互い頑張っていきましょう!!

全て無料ですが、すこしでも役に立てたり、勉強するきっかけになると嬉しいです。
「安い教科書代」としていただけると励みになります。

最後まで読んでくれてありがとうございました。

ここから先は

160字 / 1ファイル

¥ 500

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?