だから、私はドワーフ要塞のような小さなゲームを作っています...しかし今は画面をランダムに変更するだけで作業しています。私は文字列に割り当てられておらず、gは別の文字列に割り当てられています。事前に定義すると正常に動作しますが、変更すると...
これは本来あるべきことであり、通常は(動的に変更することなく)出力します。
# # # # # # 
# ^ # # ^ # 
# # ^ # # # 
# # # # # # 
# # # # # # 
# # # ^ # # 
(カラーで出力します)
しかし、配列を動的に変更しようとすると、失敗します。コードは次のとおりです。
import os
import time
import random
clear = lambda: os.system('clear')
g = '\033[32m' + '# '
t = '\033[31m' + '^ '
l = [g, g, g, g, g, g,
     g, t, g, g, t, g,
     g, g, t, g, g, g,
     g, g, g, g, g, g,
     g, g, g, g, g, g,
     g, g, g, t, g, g]
def level():
    i = 0
    while i < 50:
        print l[0] + l[1] + l[2] + l[3] + l[4] + l[5]
        print l[6] + l[7] + l[8] + l[9] + l[10] + l[11]
        print l[12] + l[13] + l[14] + l[15] + l[16] + l[17]
        print l[18] + l[19] + l[20] + l[21] + l[22] + l[23]
        print l[24] + l[25] + l[26] + l[27] + l[28] + l[29]
        print l[30] + l[31] + l[32] + l[33] + l[34] + l[35]
        time.sleep(0.2)
        i += 1
        for b in l:
            ch = round(random.random())
            if ch:
                l[b] = t
            else:
                l[b] = g
        clear()
level()
そして、ここにエラーがあります:
Traceback (most recent call last):
  File "DF.py", line 33, in <module>
    level()
  File "DF.py", line 29, in level
    l[b] = t
TypeError: list indices must be integers, not str
どうすればこれを修正できますか?また、この質問に関係のないヒントや提案も大歓迎です。Pythonの初心者なので、プロのヒントが必要です:P
また、配列を投げて印刷することなく、これをすべて正しい形式で印刷する方法があると確信しています。おそらくループのあるものがありますが、私が標準を実行するだけの場合
for i in l:
    print l[i]
動作しません。6x6で印刷されません。1x36で印刷されます:Pだから、この小さなゲームで私を助けてください!