当ページのリンクには広告が含まれています。
Pythonの基礎を身につけるために簡単なメモアプリを作ります。
メモアプリの仕様
メモを追加するのか、メモを出力するのかのモードを選択させる。
追加モードを選択した場合の動作は以下とする。
「メモのタイトルを入力してください。」という表示をさせる
メモのタイトルを入力
「メモの本文を入力してください」という表示をさせる
本文を入力
メモの出力を選択した場合、作成したメモを出力させる
定義していないモードを選択した場合は「エラーです」と出力させる
メモは常に起動状態にさせておく。
Pythonの基礎 メモアプリを作成するためにPythonの基礎を簡単にまとめておきます。
リストの操作
ひとまずリストを作成します。
1 2 3 >>> s = ['a', 'b', 'c', 'd', 'e', 'f'] >>> s ['a', 'b', 'c', 'd', 'e', 'f']
リストの0番目を取り出したいときは以下のとおりです。
2番目から5番目の文字列を取り出したいときは以下のように記述します。
1 2 >>> s[2:5] ['c', 'd', 'e']
2番目から5番目の文字列を入れ替えたいときは以下のように記述します
1 2 3 >>> s[2:5] = ['C', 'D', 'E'] >>> s ['a', 'b', 'C', 'D', 'E', 'f']
2番目から5番目の文字列を削除したい場合は、空のリストを代入すれば削除できます。
1 2 3 >>> s[2:5]=[] >>> s ['a', 'b', 'f']
[:]
とすると全部のリストを取得できます。これに空のリストを指定すれば、全削除になります。
1 2 3 4 5 >>> s[:] ['a', 'b', 'f'] >>> s[:] = [] >>> s []
次に文字列を加えたい場合は、.append()
メソッドを使用します。
1 2 3 >>> s.append('a') >>> s ['a']
先頭に文字列を加えたい場合は、insert()
で0を指定して以下のように記述します。
1 2 3 >>> s.insert(0, 'z') >>> s ['z', 'a']
リストの中の末尾の文字を取り出したい場合は以下のように.pop()
を使います。
1 2 3 4 >>> s.pop() 'a' >>> s ['z']
リストの先頭の文字を取り出したいときは0を指定すればOKです。
リストの中の値を削除するものとしてはdelというのがあります。
1 2 3 4 >>> s = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> del s[0] >>> s [2, 3, 4, 5, 6, 7, 8, 9]
特定の値を指定して削除したい場合は、remove()
を用います。
1 2 3 4 >>> n = [1, 2, 2, 2, 3] >>> n.remove(2) >>> n [1, 2, 2, 3]
remove()
は、該当する値がなくなるまで有効です。
1 2 3 4 5 6 7 8 >>> n.remove(2) >>> n.remove(2) >>> n.remove(2) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: list.remove(x): x not in list >>> n [1, 3]
リストの結合は、extend()
が便利です。
1 2 3 4 5 6 >>> s [2, 3, 4, 5, 6, 7, 8, 9] >>> n.extend(s) >>> n [1, 3, 2, 3, 4, 5, 6, 7, 8, 9] >>>
辞書型
辞書型は、キーとバリューの組み合わせが含まれているデータのことです。
早速作成してみます。
1 2 3 >>> memo = {'title': 10, 'content':20} >>> memo {'title': 10, 'content': 20}
typeを見てみると’dict’となります。
1 2 >>> type(memo) <class 'dict'>
キーを指定すればバリューが取り出せます。
1 2 3 4 >>> memo['title'] 10 >>> memo['content'] 20
キーを指定して値を代入することができます。
1 2 3 >>> memo['title']='XXXX' >>> memo {'title': 'XXXX', 'content': 20}
新たなキーとバリューを作成することも可能です。
1 2 3 >>> memo['email'] = 'aaa@example.com' >>> memo {'title': 'XXXX', 'content': 20, 'email': 'aaa@example.com'}
キーは文字だけでなくint(数値)でもOKです。
1 2 3 >>> memo[1] = 10000 >>> memo {'title': 'XXXX', 'content': 20, 'email': 'aaa@example.com', 1: 10000}
辞書の作成はdictを用いても可能です
1 2 3 >>> dict(a=20, b=40) {'a': 20, 'b': 40} >>>
input関数
input関数は、Whileループとセットでよく使われます。何らかの入力をコンソール上で要求し、条件を満たす入力がされたらプログラムが終了するコードの例を以下に記載します。
sample.py 1 2 3 4 5 6 7 8 while True: word = input('enter:') if word == 'ok': break print('next') # enter:ok ← okと入力 # next
メモアプリの実装
学んだpythonの知識を用いてメモアプリを実装していきましょう。
メモアプリの仕様の中で、簡単に作れそうな部分からコードを書いていきます。
まずは、”メモのタイトルを入力してください”という文字列を出力し、何らかの文字を入力させて出力させてみます。
memoapp.py 1 2 3 4 5 6 7 8 9 10 print('メモを入力してください') a = input() print('入力された文字は') print(a) # メモを入力してください # aiueo # 入力された文字は # aiueo
次に辞書型でメモのタイトルとメモの本文を定義して、タイトルと本文を登録させるところまで実装します。
memoapp.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 memo = {"タイトル":"未設定", "本文":"未設定"} print('メモのタイトルを入力してください') memo["タイトル"] = input() print('メモの本文を入力してください') memo["本文"] = input() print("######################################") print(" ") print("入力されたメモは") print(memo["タイトル"] + ":" + memo["本文"]) # $ ~/python-study /usr/local/bin/python3 "/Users/omathin/python-study/memoapp.py" # メモのタイトルを入力してください # pythonコード書いてます # メモの本文を入力してください # メモ作成まで完成しました # ###################################### # 入力されたメモは # pythonコード書いてます:メモ作成まで完成しました
次に複数のメモを管理できるように配列を使います。まずは2つのメモを管理できるようにします。
memoapp.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 memos = [{"タイトル":"未設定", "本文":"未設定"}, {"タイトル":"未設定", "本文":"未設定"}] print('1つ目のメモのタイトルを入力してください') memos[0]["タイトル"] = input() print('1つ目のメモの本文を入力してください') memos[0]["本文"] = input() print('2つ目のメモのタイトルを入力してください') memos[1]["タイトル"] = input() print('2つ目のメモの本文を入力してください') memos[1]["本文"] = input() print("######################################") print(" ") print("入力されたメモは") print(memos[0]["タイトル"] + ":" + memos[0]["本文"]) print(memos[1]["タイトル"] + ":" + memos[1]["本文"]) # 1つ目のメモのタイトルを入力してください # python # 1つ目のメモの本文を入力してください # コーディング # 2つ目のメモのタイトルを入力してください # ruby # 2つ目のメモの本文を入力してください # コーディング2 # ###################################### # 入力されたメモは # python:コーディング # ruby:コーディング2
次に空の配列を用意して、そこにメモを追加していくような処理にします。
memoapp.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 memos = [] # memos = [{"タイトル":"未設定", "本文":"未設定"}, {"タイトル":"未設定", "本文":"未設定"}] print('1つ目のメモのタイトルを入力してください') title = input() print('1つ目のメモの本文を入力してください') content = input() memo = {"タイトル": title, "本文": content} memos.append(memo) print('2つ目のメモのタイトルを入力してください') title = input() print('2つ目のメモの本文を入力してください') content = input() memo = {"タイトル": title, "本文": content} memos.append(memo) print("######################################") print(" ") print("入力されたメモは") print(memos[0]["タイトル"] + ":" + memos[0]["本文"]) print(memos[1]["タイトル"] + ":" + memos[1]["本文"]) # 1つ目のメモのタイトルを入力してください # python1 # 1つ目のメモの本文を入力してください # code1 # 2つ目のメモのタイトルを入力してください # ruby1 # 2つ目のメモの本文を入力してください # code2 # ###################################### # 入力されたメモは # python1:code1 # ruby1:code2
メモの出力部分をfor文を用いて出力させます。
memoapp.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 memos = [] print('1つ目のメモのタイトルを入力してください') title = input() print('1つ目のメモの本文を入力してください') content = input() memo = {"タイトル": title, "本文": content} memos.append(memo) print('2つ目のメモのタイトルを入力してください') title = input() print('2つ目のメモの本文を入力してください') content = input() memo = {"タイトル": title, "本文": content} memos.append(memo) print("######################################") print(" ") print("入力されたメモは") for memo in memos: print(memo["タイトル"] + ":" + memo["本文"]) # 1つ目のメモのタイトルを入力してください # python1 # 1つ目のメモの本文を入力してください # code1 # 2つ目のメモのタイトルを入力してください # ruby1 # 2つ目のメモの本文を入力してください # code2 # ###################################### # 入力されたメモは # python1:code1 # ruby1:code2
メモを作成する部分をメソッド化させましょう。
memoapp.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 def create_memo(): print('メモのタイトルを入力してください') title = input() print('メモの本文を入力してください') content = input() return {"タイトル":title, "本文":content} memos = [] memos.append(create_memo()) print("######################################") print(" ") print("入力されたメモは") for memo in memos: print(memo["タイトル"] + ":" + memo["本文"]) # メモのタイトルを入力してください # 記事作成 # メモの本文を入力してください # ブログ1記事作成 # ###################################### # 入力されたメモは # 記事作成:ブログ1記事作成
メモを出力する部分をメソッド化させましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 def create_memo(): print('メモのタイトルを入力してください') title = input() print('メモの本文を入力してください') content = input() return {"タイトル":title, "本文":content} def show_memo(): print("######################################") print(" ") print("入力されたメモは") for memo in memos: print(memo["タイトル"] + ":" + memo["本文"]) memos = [] memos.append(create_memo()) show_memo() # メモのタイトルを入力してください # 記事作成 # メモの本文を入力してください # ブログ1記事作成 # ###################################### # 入力されたメモは # 記事作成:ブログ1記事作成
モードの選択表示をさせます。
memoapp.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 def create_memo(): print('メモのタイトルを入力してください') title = input() print('メモの本文を入力してください') content = input() return {"タイトル":title, "本文":content} def show_memo(): print("######################################") print(" ") print("入力されたメモは") for memo in memos: print(memo["タイトル"] + ":" + memo["本文"]) memos = [] print("メモを追加【add】") print('メモを表示【show】') mode = input("モードを選んでください:") if mode == "add": memos.append(create_memo()) elif mode == "show": show_memo() else: print("エラーです") # メモを追加【add】 # メモを表示【show】 # モードを選んでください:add # メモのタイトルを入力してください # ブログ作成 # メモの本文を入力してください # 1記事作成 # $ ~/python-study /usr/local/bin/python3 "/Users/omathin/python-study/memoapp.py" # メモを追加【add】 # メモを表示【show】 # モードを選んでください:show # ######################################
これだとメモが消えてしまうので、メモアプリが常に起動状態にさせるためにwhileを使用します。
memoapp.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 def create_memo(): print('メモのタイトルを入力してください') title = input() print('メモの本文を入力してください') content = input() return {"タイトル":title, "本文":content} def show_memo(): print("######################################") print(" ") print("入力されたメモは") for memo in memos: print(memo["タイトル"] + ":" + memo["本文"]) memos = [] while True: print("メモを追加【add】") print('メモを表示【show】') mode = input("モードを選んでください:") if mode == "add": memos.append(create_memo()) elif mode == "show": show_memo() else: print("エラーです") # メモを追加【add】 # メモを表示【show】 # モードを選んでください:add # メモのタイトルを入力してください # ブログを作成 # メモの本文を入力してください # 1記事作成 # メモを追加【add】 # メモを表示【show】 # モードを選んでください:add # メモのタイトルを入力してください # 料理を作る # メモの本文を入力してください # 卵焼きを作る # メモを追加【add】 # メモを表示【show】 # モードを選んでください:show # ###################################### # 入力されたメモは # ブログを作成:1記事作成 # 料理を作る:卵焼きを作る # メモを追加【add】 # メモを表示【show】 # モードを選んでください:
ひとまず仕様通りのメモアプリの作成はできたかな、と思います。
他にも、「メモの上限を5つまでにする」とか「メモを削除するモードを加える」とかもチャレンジしてみてください。
まとめ
本記事では、メモアプリを作成しながらpythonの基礎を学ぶ、というテーマでまとめていきました
本記事でまとめた内容をベースに、プログラミングの学習を楽しんでいただけたら幸いです。
Pythonの基礎を学びた方へ(Udemy)
シリコンバレーの現役エンジニアによるUdemyの講座「現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル」 を参照してください。30日間の返金保証付きです。