PaizaでPython3が完全無料なのでまとめました。
##01:辞書とは何か学ぼう
lesson.py
まとまったデータをテキスト(キー)で扱う
リスト
list 012に対し
list[0]="モンスター"
list[1]="ドラゴン"
list[2]="魔王"
辞書
dict ザコ 中ボス ラスボス
dict["ザコ"]="モンスター"
dict["中ボス"]="ドラゴン"
dict["ラスボス"]="魔王"
というようにできる
辞書な基本機能
enemies ザコ 中ボス ラスボス
キーでデータを参照
print(enemies["ザコ"])
キーを変数を求める
level="中ボス"
print(enemies[level])
データの個数
print(len(enemies))
追加、更新、削除もできる
辞書の使い所
1.DBとやりとりするデータの処理
点数一覧のデータ(縦列)→リストで処理
国語の点数
2.APIとやりとりするデータの処理
学生のレコード(横列)→辞書(ディクショナリ)で処理
出席番号、国語、算数、英語
##02辞書を作る
lesson.py
# リストのおさらい
enemyArray=["スライム","モンスター","ドラゴン"]
print(enemyArray)
print(enemyArray[0])
#辞書の具体例
enemyDictionary= {"ザコ":"スライム","中ボス":"ドラゴン","ラスボス":"魔王"}
print(enemyDictionary)
print(enemyDictionary["ザコ"])
print(enemyDictionary["中ボス"])
level= "ザコ"
print(enemyDictionary[level])
level="ラスボス"
print(enemyDictionary[level])
#存在しないものはエラーになる
#print(enemyDictionary["敵"])
lesson.py
print(enemyArray)
['スライム', 'モンスター', 'ドラゴン']
print(enemyArray[0])
スライム
print(enemyDictionary)
{'ザコ': 'スライム', '中ボス': 'ドラゴン', 'ラスボス': '魔王'}
print(enemyDictionary["ザコ"])
スライム
print(enemyDictionary["中ボス"])
ドラゴン
level= "ザコ"
スライム
level="ラスボス"
魔王
##演習
1.指定の文字を辞書にしてみよう
lesson.py
skills = {"職業":"戦士", "体力":100, "魔法力":200,"ゴールド":380}
print(skills)
2.ハッシュの中身を確認してみよう
lesson.py
skills = {"職業":"戦士", "体力":100, "魔法力":200, "ゴールド":380}
# この下で、辞書を出力してみよう
print(skills)
3.辞書の特定の値を出力してみよう
lesson.py
skills = {"職業":"戦士", "体力":100, "魔法力":200, "ゴールド":380}
# この下で、辞書から出力してみよう
print(skills["職業"])
##03:辞書の基本操作
lesson.py
# 辞書の基本操作
enemies = {"ザコ":"スライム", "中ボス":"ドラゴン", "ラスボス":"魔王"}
print(enemies)
print(enemies["ザコ"])
print(enemies["中ボス"])
#辞書の個数を出すことができる
print(len(enemies))
#辞書に追加することができる
enemies["ザコ2"]="メタルモンスター"
print(enemies)
print(len(enemies))
#値の変更
enemies["中ボス"]="レッドドラゴン"
print(enemies)
print(len(enemies))
#値の削除
del enemies["ザコ"]
print(enemies)
print(len(enemies))
##演習
1.辞書の長さを出力してみよう
lesson.py
skills = {"職業":"戦士", "体力":100, "魔法力":200, "ゴールド":380}
# この下で、辞書の長さを出力してみよう
print(len(skills))
2.辞書の要素を追加しよう
lesson.py
skills = {"職業":"戦士", "体力":100, "魔法力":200, "ゴールド":380}
# この下で、辞書にデータを追加してみよう
skills["属性"]="炎"
print(skills)
3.辞書の要素を更新しよう
lesson.py
skills = {"職業":"戦士", "体力":100, "魔法力":200, "ゴールド":380}
print(skills)
# この下で、ハッシュを更新してみよう
skills["職業"]="魔法使い"
print(skills)
4.辞書の要素を削除しよう
lesson.py
skills = {"体力" : 100,"職業" : "戦士", "魔法力" : 200, "ゴールド" : 380}
print(skills)
# この下で、辞書を削除してみよう
del skills["体力"]
print(skills)
##04:辞書をループ処理する
lesson.py
# 辞書のおさらい
enemies = {"ザコ":"スライム", "中ボス":"ドラゴン", "ラスボス":"魔王"}
print(enemies)
print(enemies["ザコ"])
print(enemies["中ボス"])
#ループ処理
for rank in enemies:
print(enemies[rank] + "が、あらわれた!")
#辞書のキーと値をペアで取り出すにはitemsメゾットを使う
for (rank,enemy) in enemies.items():
print(rank + "の" + enemy + "が、あらわれた!")
##演習
1.ループで辞書の値を出力しよう
lesson.py
skills = {"職業" : "戦士", "体力" : 100, "魔法力" : 200, "ゴールド" : 380}
# この下で、辞書の値をループで出力してみよう
for i in skills:
print(skills[i])
2.ループで辞書のキーと値を出力しよう
lesson.py
skills = {"職業" : "戦士", "体力" : 100, "魔法力" : 200, "ゴールド" : 380}
# この下で、ハッシュの値をループで出力してみよう
for(key,item) in skills.items():
print(key + "は" + str(item) + "です")
3.ループで合計を計算しよう
lesson.py
points = {"国語" : 70, "算数" : 35, "英語" : 52}
sum = 0
# この下で、辞書の値の合計をループで計算してみよう
for key in points:
sum +=points[key]
print(sum)
##05:リストの整列
lesson.py
# リストの整列
weapons=["イージスソード","ウィンドスピア","アースブレイカー","イナズマハンマー"]
print(weapons)
#アイウエオ順
print(sorted(weapons))
#アイウエオ順の反対
print(sorted(weapons,reverse=True))
wepons2=["4.イージスソード","1.ウィンドスピア","3.アースブレイカー","2.イナズマハンマー"]
#数字>アイウエオ順になる
print(sorted(wepons2))
wepons3=["4.イージスソード","1ウィンドスピア","1アースブレイカー","2.イナズマハンマー"]
#同じ数があった場合、アイウエオ順が優先される
print(sorted(wepons3))
wepons4=["バーニングソード","風神スピア","大地ブレイカー","稲妻ハンマー"]
#漢字やカタカナが混じっているときは注意!ソートされない時がある
print(sorted(wepons4))
lesson.py
['イージスソード', 'ウィンドスピア', 'アースブレイカー', 'イナズマハンマー']
['アースブレイカー', 'イナズマハンマー', 'イージスソード', 'ウィンドスピア']
['ウィンドスピア', 'イージスソード', 'イナズマハンマー', 'アースブレイカー']
['1.ウィンドスピア', '2.イナズマハンマー', '3.アースブレイカー', '4.イージスソード']
['1アースブレイカー', '1ウィンドスピア', '2.イナズマハンマー', '4.イージスソード']
['バーニングソード', '大地ブレイカー', '稲妻ハンマー', '風神スピア']
##演習
1.リストを逆順にソートする
lesson.py
apples = [310, 322, 292, 288, 300, 346]
# ここに、要素をソートして表示するコードを記述する
print(sorted(apples))
2.リストを逆順にソートする
lesson.py
apples = [310, 322, 292, 288, 300, 346]
ここに、要素をソートして表示するコードを記述する
print(sorted(apples,reverse=True))
3.英単語リストをアルファベット順に並べる
lesson.py
words = ["pumpkin", "orange", "apple", "carrot", "onion"]
# ここに、要素をソートして表示するコードを記述する
print(sorted(words))
06:辞書の整列
lesson.py
weapons={"イージスソード":40,"ウィンドスピア":12,"アースブレイカー":99}
#辞書として表示する
print(sorted(weapons))
print(weapons)
#辞書をキーでソート(整列)する
#タプル・・・データ構造の一種、内容の更新は不可
#リストのように様座な値をまとめて管理するデータ構造のこと
print(sorted((weapons).items()))
##演習
1.辞書をキーで昇順にソートしてみよう
lesson.py
math = {"いいだ" : 12, "えんどう" : 99, "あだち" : 40}
# この下で、辞書をキーでソートして出力しよう
# 辞書の整列
#辞書として表示する
print(sorted(math))
2.辞書をソートして辞書で出力する
lesson.py
# 辞書をソートして辞書で出力する
math = {"えんどう" : 99, "あだち" : 40, "いいだ" : 12}
# この下で、辞書をキーでソートして、辞書として出力しよう
print(sorted((math).items()))
##07RPGのアイテム一覧を再現1
lesson.py
アイテム一覧:複数のアイテム画像を表示する
剣、縦、回復薬、回復薬、クリスタル
1.アイテム画像とアイテム名を表示する
2.同じアイテムを複数表示したい
3.アイテムの並び順を管理したい
4.同じアイテム画像のファイルは1つを共有
辞書と配列を組み合わせる
並び順用リスト item_oders
| 並び順| アイテム名 |
| ---- | ---- |
| 0 | クリスタル|
| 1 | "剣" |
| 2 | "回復薬" |
| 3 | "盾" |
↓item_ordersをキーにして、↓の画像ファイルを取り出すようにする
画像用辞書 item.images
| アイテム名 | 画像ファイル |
| ---- | ---- |
| 剣 | 剣の画像 |
| クリスタル | クリスタルの画像 |
| 盾 | 盾の画像 |
| 回復薬 | 回復薬の画像 |
これをコードにすると、
item_orders[0]→itemimages[item_orders[0]]→クリスタルの画像ファイル
item_orders[1]→itemimages[item_orders[1]]→剣
:
:
を繰り返すプログラムを作りたい
##08:RPGのアイテム一覧を再現2
lesspn.py
# 画像用ハッシュ
item_images = {
"剣":"http://paiza.jp/learning/images/sword.png",
"盾":"http://paiza.jp/learning/images/shield.png",
"回復薬":"http://paiza.jp/learning/images/potion.png",
"クリスタル":"http://paiza.jp/learning/images/crystal.png"
}
# アイテムの並び順配列
items_order = ["クリスタル", "盾", "剣", "回復薬", "回復薬", "回復薬"]
#print(item_images)
#print(items_order)
lesson.py
for item_name in items_order:
print(item_name)
出力
クリスタル
盾
剣
回復薬
回復薬
回復薬
lesson.py
#アイテム名を取り出す
for item_name in items_order:
print(item_images[item_name])
print(item_name)
http://paiza.jp/learning/images/crystal.png
クリスタル
http://paiza.jp/learning/images/shield.png
盾
http://paiza.jp/learning/images/sword.png
剣
http://paiza.jp/learning/images/potion.png
回復薬
http://paiza.jp/learning/images/potion.png
回復薬
http://paiza.jp/learning/images/potion.png
回復薬
lesson.py
#アイテム名を取り出す
for item_name in items_order:
print("<img src='"+item_images[item_name]+"'>")
print(item_name+"<br>")
<img src='http://paiza.jp/learning/images/crystal.png'>
クリスタル
<img src='http://paiza.jp/learning/images/shield.png'>
盾
<img src='http://paiza.jp/learning/images/sword.png'>
剣
<img src='http://paiza.jp/learning/images/potion.png'>
回復薬
<img src='http://paiza.jp/learning/images/potion.png'>
回復薬
<img src='http://paiza.jp/learning/images/potion.png'>
回復薬
##演習
1.画像を順番に出力する
lesson.py
items_imges = {
"剣" : "http://paiza.jp/learning/images/sword.png",
"盾" : "http://paiza.jp/learning/images/shield.png",
"回復薬" : "http://paiza.jp/learning/images/potion.png",
"クリスタル" : "http://paiza.jp/learning/images/crystal.png"
}
# アイテムの並び順リスト
items_orders = ["剣", "盾", "回復薬", "クリスタル"]
# ここから下を記述しよう
for item_name in items_orders:
print("<img src='"+items_imges[item_name]+"'><br>")
2.アイテムリストを作ってみよう
lesson.py
入力
6
回復薬
盾
クリスタル
クリスタル
剣
剣
# 画像用辞書
items_imges = {
"剣" : "http://paiza.jp/learning/images/sword.png",
"盾" : "http://paiza.jp/learning/images/shield.png",
"回復薬" : "http://paiza.jp/learning/images/potion.png",
"クリスタル" : "http://paiza.jp/learning/images/crystal.png"
}
# ここから下を記述しよう
# 出力するアイテム数を変数に代入
item_cnt = int(input())
# 標準入力にあるアイテムを出力する
while item_cnt > 0:
item = input()
print("<img src = '" + items_imges[item] + "'>")
item_cnt = item_cnt - 1
出力
<img src = 'http://paiza.jp/learning/images/potion.png'>
<img src = 'http://paiza.jp/learning/images/shield.png'>
<img src = 'http://paiza.jp/learning/images/crystal.png'>
<img src = 'http://paiza.jp/learning/images/crystal.png'>
<img src = 'http://paiza.jp/learning/images/sword.png'>
<img src = 'http://paiza.jp/learning/images/sword.png'>