前提・実現したいこと
文字データの0~10のラベルを作り、
5,7,9は'あ'
3,6,8は'い'
0,1,2,4は'う'
を出力するプログラムを作成したいです。
出力結果
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] 1 ['あ', '1', '2', '3', '4', '5', '6', '7', '8', '9'] 2 ['あ', 'あ', '2', '3', '4', '5', '6', '7', '8', '9'] 3 ['あ', 'あ', 'あ', '3', '4', '5', '6', '7', '8', '9'] 4 ['あ', 'あ', 'あ', 'あ', '4', '5', '6', '7', '8', '9'] 5 ['あ', 'あ', 'あ', 'あ', 'あ', '5', '6', '7', '8', '9'] 6 ['あ', 'あ', 'あ', 'あ', 'あ', 'あ', '6', '7', '8', '9'] 7 ['あ', 'あ', 'あ', 'あ', 'あ', 'あ', 'あ', '7', '8', '9'] 8 ['あ', 'あ', 'あ', 'あ', 'あ', 'あ', 'あ', 'あ', '8', '9'] 9 ['あ', 'あ', 'あ', 'あ', 'あ', 'あ', 'あ', 'あ', 'あ', '9'] ['あ', 'あ', 'あ', 'あ', 'あ', 'あ', 'あ', 'あ', 'あ', 'あ']
該当のソースコード
python
1label = ['0','1','2','3','4','5','6','7','8','9'] 2 3domain = ['0','1','2','3','4','5','6','7','8','9'] 4 5 6for i in range(10): 7 if label[i] == '5' or '7' or '9' : 8 print(label[i]) 9 print(domain) 10 domain[i] = 'あ' 11 12 elif label[i] == '3' or '6' or '8' : 13 domain[i] = 'い' 14 15 else: 16 domain[i]='う' 17 18domain
###問題点
何故か出力が全て「あ」になってしまう。
また、2行目のdomainだが
domain = []
で空のリストを作成すると
IndexError: list assignment index out of range
と出てうまくいかない。
試したことでかなりアナログな書き方をしているが、効率の良い書き方を知りたい。
試したこと
試したこととしては、elifを作りかなり無理やりコードを書いたところ正しい出力になりました。
python
1label = ['0','1','2','3','4','5','6','7','8','9'] 2print(label[3]) 3domain = ['0','1','2','3','4','5','6','7','8','9'] 4print(domain[2]) 5 6for i in range(10): 7 if label[i] == '5': 8 domain[i] ='a' 9 elif label[i] == '7': 10 domain[i] = 'a' 11 elif label[i] == '9': 12 domain[i] = 'a' 13 elif label[i] == '3': 14 domain[i] = 'i' 15 elif label[i] == '6': 16 domain[i] = 'i' 17 elif label[i] == '8': 18 domain[i] = 'i' 19 else: 20 domain[i] = 'u'
###出力結果
['u', 'u', 'u', 'i', 'u', 'a', 'i', 'a', 'i', 'a']
補足情報(FW/ツールのバージョンなど)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。