EDIT:これを理解しようとしている人には申し訳ありません...私の他の関数のいくつかの理由で、私はforループを持っていましたAttributeError: 'str'に属性 'shape'がありません
for turt in winningRowTurtles:
winningRowTurtles[turt] = ''
私は本当に理由を知らない...すべての混乱のために申し訳ありません!
私はPythonで4つのゲームを接続しています。勝利したら、勝利のタイルとフラッシュに行くために4匹のカメを持っていきたいです。私はこれが働いている...しかし、それは勝利が発見されるとすぐに、画面の真ん中に亀が産まれて本当にすばやく隠れて(そして気を散らしている)、その場に行くならばうまくいく。私はそれがゲームの終わりにセットアップ段階でゲームの初めに生まれて隠れるようにしたい。ここに私のコードは次のとおりです。
winningRowTurtles = {}
for turt in range(4):
winningRowTurtles[turt] = turtle.Turtle()
winningRowTurtles[turt].up()
winningRowTurtles[turt].ht()
この次のコードでは、勝者が発見された後に何が起こるかです:
if winnerFound == 1:
for turt in winningRowTurtles:
winningRowTurtles[turt].shape('circle')
winningRowTurtles[turt].color('blue')
elif winnerFound == 2:
for turt in winningRowTurtles:
winningRowTurtles[turt].shape('square')
winningRowTurtles[turt].color('red')
その後、私はこのエラーを取得する:
Traceback (most recent call last):
File "C:\[redacted]\Python\Connect Four!.py", line 353, in <module>
play_game()
File "C:\[redacted]\Python\Connect Four!.py", line 258, in play_game
winningRowTurtles[turt].shape('circle')
AttributeError: 'str' object has no attribute 'shape'
play_game()がありますコードの第2部分が実行される関数です。なぜ誰が知っていますか?これは完全に不合理なようです。私は他のコードを実行する前にwinningRowTurtles [1,2,3,4]を定義しました...文字列ではなくカメとして。前もって感謝します。
forループを実行する前にwinningRowTurtlesの値を表示します。それは、winningRowTurtlesが間違って割り当てられているかどうかを教えてください。 – anujm
'winningRowTurtles'ディクショナリが作成されてから、2番目のコードブロックでinを使用するまでの間に、少なくとも1つの値が文字列に置き換えられます。それはあなたが私たちに示していないコードで起こらなければならないので、私たちがあなたにそれを手伝う実際の方法はありません。 – Blckknght