別タブでペリアクロニクルズ攻略情報を開く別タブでYoutubeを開く
【Python3】4.リスト、タプル、辞書
この記事は講座などではなく、開発中のMMORPG、PeriaChroniclesで使用できるプログラミング言語Pythonを
サービス開始前に勉強するので興味ある人は一緒にやりましょう、程度の備忘録や日記のような物です。
間違っている部分があれば指摘して頂けると助かりますヽ(・ω・)/

今回はリスト、タプル、辞書の勉強。
まずはリストですが

リスト説明
上の図は

a = ["ラーメン", "うどん", "そば", "松崎しげる"]

このように代入した時のイメージです。リストに限った話ではありませんが、0から始まるのに気をつける。
手違いで麺類のリストに松崎しげるが混入した、なんて場合は
a[3] = "スパゲッティ"
こうすればOKです。

a = ["ラーメン", "うどん", "そば", "松崎しげる"]
print(a)
print("%sは%sより%sを食べたい気分だった。" % (a[3],a[0],a[1])

実行結果
['ラーメン', 'うどん', 'そば', '松崎しげる']
松崎しげるはラーメンよりうどんを食べたい気分だった。


次、タプルについてですが
リストはa[要素1, 要素2,...]と書いたのに対して
タプルはa(要素1, 要素2,...)になります。

リストとの違いは要素の中身が変更できない事で不変性が欲しい時に使うらしい。
松崎しげった時に変更を加えられないほうがタプルとだけ覚えておけば今は良いかもしれないですね!


次、辞書について。

a = {"暑いの":"松岡修造", "黒いの":"松崎しげる", "世界レベル":"ヘレン", "はなやん":"中村屋"}
print(a["暑いの"])

実行結果
松岡修造

key:valueで1セット。中身の順番に関係なく呼び出せるのが良いらしい。

print ("暑いの" in a)
こう書いた場合、変数aの中に"暑いの"というkeyが存在するならTrue、なければFalseを返す。


◯リストで使える命令について


x = [1,4,2,0,3]
print(x)
x.reverse() #順番を逆にする
print(x)
x.sort() #小さい順(sort→reverseで大きい順になる
print(x)

実行結果
[1, 4, 2, 0, 3]
[3, 0, 2, 4, 1]
[0, 1, 2, 3, 4]
reverse()でリストの順番が逆になり、sortは小さい順になります。
大きい順にしたい時はsort(小さい順)→reverse(小さい順を反転)とやればOK。



x = "2000/01/01"
print(x)
x = x.split("/")
print(x)

実行結果
2000/01/01
['2000', '01', '01']
splitは指定した文字を境に文字列を区切り、それぞれリストに格納します。
括弧の中に何も書いて無い時はスペースを区切りとします。
それぞれ単独で使えるようになったので「2000年1月1日に◯◯がありました」のように出力したり
x[1] = '02'と書けば月の部分だけ簡単に修正できます。
文字列で無いと区切る事ができないので、splitを使った後に分割した要素を全て数値に変換したい場合は
x = list(map(int,x))
このように記述する事で変数xの値を全て数値に変換できます。
特定の物だけ変えたい場合は
x[1] = int(x[1]) と書けばOK。

◯練習◯

変数xに正の整数aとbが半角スペース区切りの文字列として代入されます。(x = a b(どちらも整数))
bの数値を5増やした後にaとbの値を比較し、aとbが同じなら「aとb+5は同じです。」と表示
違う時は大きいほうを表示し「a(b+5)はb+5(a)より◯◯大きいです。」と表示するプログラムを作成してください。
例:
・x = 25 20
25と20+5は同じです。
・x = 10 20
20+5は10より15大きいです。
・x = 20 10
20は10+5より5大きいです。


何がおかしいかわからない時はprint(x)などを挟んで対象がどんな状態なのか確認すると確認が楽になります。
下にヒントを書いて置くので必要ならクリックしてください。



どうすればいいのか全然わからない
今回求められているのは
1.変数xを半角スペースで区切ってリストにする
2.リストの中身を比較に使うので数値にする(文字列のままだと「"あ"と"い"、どっちが大きい?」みたいな事になる)
3.bの値に+5する
4.aとb+5を比較し、同じ・aが大きい・bが大きいで条件分岐
このような流れになります。
bの値に+5をせず、条件式の方に+5をつけても同じ結果にできますが
今回は問題で「bの数値を5増やした後にaとbの値を比較」と書いてあるので、実際に増やしましょう。

条件分岐できたけど表示した数値が合わない
a = 10
print("%d+5は◯◯です" % a)
こう書いても%dがaの値に置き換わるだけで実際に+5はされません。
print("%d+5は%dです" % (a,a+5))
こう書けば「10+5は15です」と表示されます(aの値は変化していません)




解答例を表示
x = "10 20"#ここの数字を変えても正常に動作するようにしてください
x = x.split()
x = list(map(int,x))
x[1] += 5
if  x[0] == x[1]:
  print("%dと%d+5は同じです。" % (x[0],x[1]-5))
elif x[0] > x[1]:
  print("%dは%d+5より%d大きいです。" % (x[0],x[1]-5,x[0]-x[1]))
else:
  print("%d+5は%dより%d大きいです。" % (x[1]-5,x[0],x[1]-x[0]))

今回の問題は今までやった事のおさらいのような内容なので
わからなければ前の記事をチラ見してくるといいかも。
もし「こんなのやってないよ!」みたいな事があったら教えてください!
関連記事

 

コメントの投稿

Secret
(非公開コメント受付不可)

コメント

プロフィール
Twitter.pngRSS.png

HN:まいける、とーげ、雪月 等
性別:男
────現在のゲーム優先順位(11/09)──
デレステ(PRP1104 フルコン82/87)
グラブル(Rank63)
──────────────────
現在開発中のMMORPG
ペリアクロニクルズが来るまで
パズドラやSteamで暇つぶし中。

最近の記事
こめんと
ツリーリンク
アクセスありがとう
密林おすすめ