##01リストとは何か学ぼう
データ構造の一種。名とまったデータを扱う
lesson.py
配列=リスト
変数「1つずつ」
変数 player_1="勇者"
変数 player_2="魔法使い"
リスト[複数ある]
team[0]="勇者"
team[1]="魔法使い"
team[2]="ドラゴン"
0から始まるようになっている
リストの具体例
team[0]="勇者"
team[1]="魔法使い"
team[2]="ドラゴン"(データの追加)、(データの変更)、(データの削除)
番号でデータを参照
print(team[0])
番号を計算で求める
print(team[n+1])
データの個数
print(len(team)
リストの使いどころ
1.並び順管理が必要な処理
・出席番号、座席順、パーティの並び順
・トランプや将棋などのゲームデータ
2.Webフォームの選択肢
.年齢、都道府県など
3.エクセルのような複数行データ
・CSVデータの処理
##02:リストを作ろう
lesson.py
#変数
player_1="勇者"
player_2="魔法使い"
print(player_1)
print(player_2)
#リスト
team = ["勇者","魔法使い",100,player_1]
print(team)
##演習
lesson.py
list = ["戦士","侍","僧侶","魔法使い"]
# この下で、listを出力してみよう
print(list)
2.指定の文字のリストにしてみよう
lesson.py
item = ["ロングソード","ブレードソード","エクスカリバー"]
print(item)
3.変数で、リストに代入しよう
lesson.py
# 変数で、リストに代入する
player_1 = "勇者"
player_2 = "魔法使い"
player_3 = "戦士"
# player_1 ~ 3を、リストに記述して、print関数で出力してください。
team=[player_1,player_2,player_3]
print(team)
##03:リストの要素を取り出してみよう
lesson.py
team = ["勇者", "魔法使い"]
print(team)
print(team[0])
num=0
print(team[num +1 ])
#エラーになるprint(team[10])
#要素数を表示することができる
print(len(team))
リストの参照 要素の番号を指定する
print(team[0]) 直接数値で指定する
print(team[num]) 変数で指定する
print(team[num + 1]) 計算式で指定する
len関数 要素の数
print(len(team))
##演習
・リストのゼロ番の要素を取り出してみよう
```lesson.py
team = ["勇者", "戦士", "侍", "忍者", "魔法使い"]
# teamの1番左の要素をprint関数で出力する
print(team[0])
・リストから特定要素を取り出してみよう
lesson.py
team = ["勇者", "戦士", "侍", "忍者", "魔法使い"]
# teamの3番目の要素をprint関数で出力する
print(team[2])
```lesson.py
weapon = ["木の棒", "鉄の棒", "鉄の剣", "銅の剣", "石斧", "エクスカリバー"]
# ここに、要素数を出力するコードを記述する
print(len(weapon))
##04:リストを操作しよう
lesson.py
team = ["勇者", "魔法使い"]
print(team)
print(team[1])
print(len(team))
team.append("戦士")
print(team)
print(len(team))
team[2]="ドラゴン"
print(team)
print(len(team))
team.pop(2)
print(team)
print(len(team))
['勇者', '魔法使い']
魔法使い
2
['勇者', '魔法使い', '戦士']
3
['勇者', '魔法使い', 'ドラゴン']
3
['勇者', '魔法使い']
2
##演習
1.「リストに要素を追加してみよう」
lesson.py
weapon = ["木の棒", "鉄の棒", "鉄の剣", "銅の剣"]
# ここに、要素を追加するコードを記述する
weapon.append("石斧")
print(weapon)
2.リストの要素を上書きしてみよう
lesson.py
weapon = ["木の棒", "鉄の棒", "鉄の剣", "サビた剣"]
# ここに、要素を上書きするコードを記述する
#print(weapon)
weapon.pop(3)
#print(weapon)
weapon.append("石斧")
print(weapon)
3.リストから要素を削除してみよう
lesson.py
weapon = ["木の棒", "鉄の棒", "鉄の剣", "銅の剣"]
# ここに、要素を削除するコードを記述する
weapon.pop(2)
print(weapon)
##05:ループでリストを処理しよう
lesson.py
team = ["勇者", "戦士", "魔法使い","盗賊"]
#print(team)
#print(team[0])
'''
for i in range(5):
print(i)
'''
print("<select name='job'>")
for job in team:
print("<option>" + job +"<optiin>")
print("</select>")
##演習
1.リストの中身を1行ずつ表示してみよう
lesson.py
enemy = ["スライム", "モンスター", "ゾンビ", "ドラゴン", "魔王"]
# ここに、要素をループで表示するコードを記述する
for i in enemy:
print(i + "が現れた!")
2.要素の合計を計算してみよう
lesson.py
numbers = [12, 34, 56, 78, 90]
total = 0
for num in numbers:
# ここに、合計を計算するコードを記述する
total += num
print(total)
##06:カンマまで区切りデータを、splitで分割しよう
lesson.py
line = input().rstrip().split(",")
print(line)
print(len(line))
for enemy in line:
print(enemy + "が現れた!")
##演習
1.「文字列をカンマで分割してみよう」
lesson.py
team_str = "勇者,戦士,忍者,魔法使い"
print(team_str.split(","))
2.カンマ区切りデータを、splitで分割しよう
lesson.py
str = "One cold rainy day when my father was a little boy he met an old alley cat on his street"
words = str.split(" ")
print(len(words))
3.標準入力から読み込んだURLを分割しよう
lesson.py
入力
https://paiza.jp/cgc/users/ready
url_str = input().rstrip().split("/")
print(url_str)
['https:', '', 'paiza.jp', 'cgc', 'users', 'ready']
##07:複数行データをリストに格納しよう
1行のデータだけ格納
lesson.py
入力
勇者は荒野を歩いていた
line = input().rstrip()
#line = input 標準入力から1行読み込む
#rstrip関数 で文字列の末尾の改行コードを取りのぞく
出力
勇者は荒野を歩いていた
line = input().rstrip()
print(line)
複数行データをリストに格納
```lesson.py
複数行取り込みたい
for in
sys.stdin.readlines関数 ファイルを全て読み込み、1行毎に処理
import sys
line = sys.stdin.readlines()
よって
import sys
for line in sys.stdin.readlines():
print(line.rstrip())#文字列の末尾の改行コードを抜き出す
lesson.py
入力
勇者は荒野を歩いていた
勇者はモンスターと戦った
勇者はモンスターを倒した
勇者は世界を救った
import sys
for line in sys.stdin.readlines():
print(line.rstrip())
出力
勇者は荒野を歩いていた
勇者はモンスターと戦った
勇者はモンスターを倒した
勇者は世界を救った
詳しい説明
lesson.py
import sys
for line in sys.stdin.readlines():
#readlines()変数は1度のすべての行を標準入力から読み込む
#正常に読み込めた場合は、ループ処理でline変数に渡してprintで出力
print(line.rstrip())
#for in の1行目ではrstripが使えないのでfor ループの中で実行
#空の行でも読み込んで空の行も表示される
入力
勇者は荒野を歩いていた
勇者はモンスターと戦った
勇者は世界を救った
出力
勇者は荒野を歩いていた
勇者はモンスターと戦った
勇者は世界を救った
lesson.py
#読み込んだデータをリストに追加してループの後でまとめて表示う
import sys
array = []#1.ループの外にarrayという空のリストを追加する
for line in sys.stdin.readlines():
array.append(line.rstrip())#2.引数にlune.rstrip
#print(line.rstrip())
print(array)#3.ループの後ろでprint
入力
勇者は荒野を歩いていた
勇者はモンスターと戦った
勇者はモンスターを倒した
勇者は世界を救った
出力
['勇者は荒野を歩いていた', '勇者はモンスターと戦った', '', '勇者はモンスターを倒した', '勇者は世界を救った']
#からの行含まれている
##演習
1.〜が現れた!と出力する
lesson.py
入力
スライム
モンスター
ゾンビ
ドラゴン
魔王
コード
import sys
for line in sys.stdin.readlines():
msg = line.rstrip()
print(msg +"が現れた")
出力
スライムが現れた
モンスターが現れた
ゾンビが現れた
ドラゴンが現れた
魔王が現れた
2.「AがB匹現れた」
lesson.py
入力
スライム,30
モンスター,23
ゾンビ,15
ドラゴン,3
魔王,1
コード
import sys
for line in sys.stdin.readlines():
# ここに、文字列を分割して、出力するコードを書く
enemy = line.rstrip().split(",")
#.split
print(enemy[0]+ "が" + enemy[1]+ "匹現れた")
#print(enemy[0]+ "が" + enemy[1]+ "匹現れた")
出力
スライムが30匹現れた
モンスターが23匹現れた
ゾンビが15匹現れた
ドラゴンが3匹現れた
魔王が1匹現れた
##08:リストを使ったランダムくじ
lesson.py
前回のおさらい
line = input().rstrip().split(",")
for enemy in line:
print(enemy + "が現れた!")
入力
スライム,モンスター,ドラゴン
出力
スライムが現れた!
モンスターが現れた!
ドラゴンが現れた!
lesson.py
line = input().rstrip().split(",")
for enemy in line:
print(enemy + "が現れた!")
#ランダムな数を作る範囲を調べる
num=len(line)
#print(line)
print("敵は" +str(num)+ "匹")
入力
スライム,モンスター,ドラゴン
出力
スライムが現れた!
モンスターが現れた!
ドラゴンが現れた!
敵は3匹
lesson.py
import random
# 標準入力から1行取得
line = input().rstrip()
# カンマで分割して、リストに代入
janken = line.split(",")
# リストの要素数を変数に代入
num = len(janken)
# リストの中身を出力
print(janken)
# ランダムに選んだリストの要素を出力
print(janken[random.randrange(num)])
```.lessonpy
##randomモジュールをインポート
import random
line = input().rstrip().split(",")
for enemy in line:
print(enemy + "が現れた!")
#ランダムな数を作る範囲を調べる
num=len(line)
print(line)
print("敵は" +str(num)+ "匹")
##ランダムな数を生成→会心の一撃の対象
attack=random.randrange(num)
#print(attack)
##選んだ数に、「会心の一撃!」と表示
print(line[attack] + "に会心の一撃" + line[attack] +"を倒した")
入力
スライム,モンスター,ドラゴン,魔王
出力
スライムが現れた!
モンスターが現れた!
ドラゴンが現れた!
魔王が現れた!
['スライム', 'モンスター', 'ドラゴン', '魔王']
敵は4匹
魔王に会心の一撃魔王を倒した
##演習
1.じゃんけんプログラムを作ろう
lesson.py
import random
# 標準入力から1行取得
line = input().rstrip()
# カンマで分割して、リストに代入
janken = line.split(",")
# リストの要素数を変数に代入
num = len(janken)
# リストの中身を出力
print(janken)
# ランダムに選んだリストの要素を出力
print(janken[random.randrange(num)])
2.おみくじを作ろう
lesson.py
import random
#標準入力から1行取得
line = input().rstrip()
# 今回は自力で全部書いてみよう!
# カンマで分割して、リストに代入
omikuji = line.split(",")
##リストが生成されたことの確認
print(omikuji)
# リストの要素数を変数に代入
num = len(omikuji)
# リストの中身を出力
print(omikuji)
# ランダムに選んだリストの要素を出力
print(omikuji[random.randrange(num)])