2015年11月23日月曜日

【プログラミング】Pythonの勉強 その9 - 実行結果をファイルに書き込む -

プログラミング初心者の学習記録です。
前回はSkyrimというゲームの中での結婚相手を選ぶプログラミングを作りました。
今回も自分の好きなものにちなんだプログラミングを作っていこうと思います。

実はいい年をしながら、何年か前はアイドルにはまっていました。
一時期はAKBのまとめサイトをこまめにチェックしたりしていたのですが、最近はまったくご無沙汰です。
しばらく離れているうちに新しいメンバーも出てきました。NGT48なんてものもできましたね。
AKBグループ全体で300人以上いるみたいです。とても全員を覚えることはできなそうです。

そんなAKBグループの中から推しメンを10人選んでみよう!というのが、こんなのプログラムのお題です。



まずは各グループのチーム別にリストを作ります。前回同様テキストファイルにこのように書いていきます。
作ってリストは18種類です。どんなチームがあるかはコードの方を見てください。

最初にテキストファイルからリストを読み込みます。
どのリストから選ぶかを決めて、そのリストから一人を選んで表示します。
これを10回繰り返して、最後に結果をテキストファイルに書き込むというものです。

  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
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# coding:shift-jis
import random

AKB_A_list = open('AKB_A.txt','r')
AKB_A = AKB_A_list.readlines()
AKB_A_list.close()

AKB_K_list = open('AKB_K.txt','r')
AKB_K = AKB_K_list.readlines()
AKB_K_list.close()

AKB_B_list = open('AKB_B.txt','r')
AKB_B = AKB_B_list.readlines()
AKB_B_list.close()

AKB_4_list = open('AKB_4.txt','r')
AKB_4 = AKB_4_list.readlines()
AKB_4_list.close()

AKB_8_list = open('AKB_8.txt','r')
AKB_8 = AKB_8_list.readlines()
AKB_8_list.close()

AKB_ken_list = open('AKB_ken.txt','r')
AKB_ken = AKB_ken_list.readlines()
AKB_ken_list.close()

SKE_S_list = open('SKE_S.txt','r')
SKE_S = SKE_S_list.readlines()
SKE_S_list.close()

SKE_K2_list = open('SKE_K2.txt','r')
SKE_K2 = SKE_K2_list.readlines()
SKE_K2_list.close()

SKE_E_list = open('SKE_E.txt','r')
SKE_E = SKE_E_list.readlines()
SKE_E_list.close()

SKE_ken_list = open('SKE_ken.txt','r')
SKE_ken = SKE_ken_list.readlines()
SKE_ken_list.close()

NMB_N_list = open('NMB_N.txt','r')
NMB_N = NMB_N_list.readlines()
NMB_N_list.close()

NMB_M_list = open('NMB_M.txt','r')
NMB_M = NMB_M_list.readlines()
NMB_M_list.close()

NMB_B2_list = open('NMB_B2.txt','r')
NMB_B2 = NMB_B2_list.readlines()
NMB_B2_list.close()

NMB_ken_list = open('NMB_ken.txt','r')
NMB_ken = NMB_ken_list.readlines()
NMB_ken_list.close()

HKT_H_list = open('HKT_H.txt','r')
HKT_H = HKT_H_list.readlines()
HKT_H_list.close()

HKT_K4_list = open('HKT_K4.txt','r')
HKT_K4 = HKT_K4_list.readlines()
HKT_K4_list.close()

HKT_ken_list = open('HKT_ken.txt','r')
HKT_ken = HKT_ken_list.readlines()
HKT_ken_list.close()

NGT_list = open('NGT.txt','r')
NGT = NGT_list.readlines()
NGT_list.close()

N = 0
oshimen_best10 = open('oshimen_best10.txt','w') 
# 結果を書き込むテキストファイルを用意する

while N < 10:
    i = random.randint(0,17)
    N += 1
    
    if i == 0: # 0 なら AKB_A
        choice = random.choice(AKB_A)
        team = 'AKB48 チームA '
    elif i == 1: # 1 なら AKB_K
        choice = random.choice(AKB_K)
        team = 'AKB48 チームK '
    elif i == 2: # 2 なら AKB_B
        choice = random.choice(AKB_B)
        team = 'AKB48 チームB '
    elif i == 3: # 3 なら AKB_4
        choice = random.choice(AKB_4)
        team = 'AKB48 チーム4 '
    elif i == 4: # 4 なら AKB_8
        choice = random.choice(AKB_8)
        team = 'AKB48 チーム8 '
    elif i == 5: # 5 なら AKB_ken
        choice = random.choice(AKB_ken)
        team = 'AKB48 研究生 '
    elif i == 6: # 6 なら SKE_S
        choice = random.choice(SKE_S)
        team = 'SKE48 チームS '
    elif i == 7: # 7 なら SKE_K2
        choice = random.choice(SKE_K2)
        team = 'SKE48 チームK2 '
    elif i == 8: # 8 なら SKE_E
        choice = random.choice(SKE_E)
        team = 'SKE48 チームE '
    elif i == 9: # 9 なら SKE_ken
        choice = random.choice(SKE_ken)
        team = 'SKE48 研究生 '
    elif i == 10: # 10 なら NMB_N
        choice = random.choice(NMB_N)
        team = 'NMB48 チームN '
    elif i == 11: # 11 なら NMB_M
        choice = random.choice(NMB_M)
        team = 'NMB48 チームM '
    elif i == 12: # 12 なら NMB_B2
        choice = random.choice(NMB_B2)
        team = 'NMB48 チームB2 '
    elif i == 13: # 13 なら NMB_ken
        choice = random.choice(NMB_ken)
        team = 'NMB48 研究生 '
    elif i == 14: # 14 なら HKT_H
        choice = random.choice(HKT_H)
        team = 'HKT48 チームH '
    elif i == 15: # 15 なら HKT_K4
        choice = random.choice(HKT_K4)
        team = 'HKT48 チームK4 '
    elif i == 16: # 16 なら HKT_ken
        choice = random.choice(HKT_ken)
        team = 'HKT48 研究生 '
    else: # 17 なら NGT
        choice = random.choice(NGT)
        team = 'NGT48 '
    
    print(team + choice.strip())
    oshimen = team + choice
    oshimen_best10.write(str(oshimen)) # 結果をテキストファイルに書き込む
    
oshimen_best10.flush()
oshimen_best10.close()
syntax2html

ずいぶんと長いコードになってしまいました。
結果がこんなふうに表示されて、


テキストファイルにこのように書き込まれます。
ちなみにこの10人の中で名前を知っているメンバーは、3人だけです。


今回はテキストファイルに保存しようとしたら文字化けしたりして苦労しました。
あと、同じメンバーが重複して出てくる可能性があります。
ちょっと現時点の知識では対応できなさそうです。今後の宿題です。

0 件のコメント:

コメントを投稿