Python Turtleforループが無限に実行されます

YLP

Repl.itのPythonでTurtleIDEを使用してシェルピンスキーのギャスケットを描画するために以前に正常に実行したTurtleコードがいくつかありますが、最近再度実行しようとすると、forループに到達した場合を除いてすべて正常に実行されます。タートルは回転を開始するだけで、かなり後になるまでforループの行を実行しません。

forloopにprint(i)を追加しましたが、無限ループであるかのように0を繰り返し出力しています。

import turtle
from turtle import *

t = Turtle()
t.speed(0)
t.shape('turtle')
t.color('dark green')

def SGRules(char):
  if char == 'F':
    return 'F+F-F-F+F'
  else:
    return char

def processStr(oldstr, Fractal_Rules):
  newstr = ""
  for char in oldstr:
    newstr = newstr + Fractal_Rules(char)
  return newstr

def createLSystem(iteration, axiom, Fractal_Rules):
  startstr = axiom
  endstr = ""
  for i in range(iteration):
    endstr = processStr(startstr, Fractal_Rules)
    startstr = endstr
  return endstr

def drawLSystem(aturtle, lsys, angle, length):
  for cmd in lsys:
    if cmd == 'F':
      aturtle.forward(length)
    elif cmd == '+':
      aturtle.left(angle)
    elif cmd == '-':
      aturtle.right(angle)

sgstr = createLSystem(4, 'F', SGRules)
print(sgstr)
drawLSystem(t, sgstr, 120, 20)
for i in range(2):
  print(i)
  t.left(120)
  t.forward(20 * 2**4)

右下隅に到達するとすぐに、残りの外側の三角形の2つの辺を描画する必要があります。

cdlane

このコードのクリーンアップは、repl.itとPythonコンソールで問題なく実行されます。

from turtle import Screen, Turtle

ANGLE = 120
LENGTH = 20
ITERATIONS = 4

def SGRules(character):
    if character == 'F':
        return 'F+F-F-F+F'

    return character

def processStr(string, rules):
    new_string = ""

    for character in string:
        new_string += rules(character)

    return new_string

def createLSystem(iterations, axiom, rules):
    string = ""

    for _ in range(iterations):
        string = processStr(axiom, rules)
        axiom = string

    return string

def drawLSystem(turtle, lsys, angle, length):
    for command in lsys:
        if command == 'F':
            turtle.forward(length)
        elif command == '+':
            turtle.left(angle)
        elif command == '-':
            turtle.right(angle)

yertle = Turtle('turtle')
yertle.speed('fastest')
yertle.shape('turtle')
yertle.color('dark green', 'light green')

sg_string = createLSystem(ITERATIONS, 'F', SGRules)
print(sg_string)
drawLSystem(yertle, sg_string, ANGLE, LENGTH)

for _ in range(2):
    yertle.left(ANGLE)
    yertle.forward(LENGTH * 2 ** ITERATIONS)

screen = Screen()
screen.mainloop()

ウィンドウが閉じないように、最後にtkinterのイベントループに転送を追加すると、元のコードはPythonコンソールで正常に機能しました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

このPythonコードが無限に実行されないのはなぜですか?

分類Dev

Python / Seleniumはページの読み込み時に無限ループを実行しています

分類Dev

Pythonでループが実行されるのにどのくらい時間がかかりますか?

分類Dev

ローカルで `python manage.py runserver`を実行すると、権限が拒否されます

分類Dev

リスト内包表記はPythonシェルでは正常に機能しますが、スクリプトの実行時には無視されます

分類Dev

Pythonでforループを実行する:最初は正しく実行されますが、残りの実行は正しく実行されません

分類Dev

Pythonの無限ループ-リストは更新されていますか?

分類Dev

print()関数は、Python3でforループが終了した後にのみ実行されます

分類Dev

forループが実行されていませんpython

分類Dev

プログラムが無限ループを実行しているのはなぜですか?Python

分類Dev

Pythonモジュールで無限のwhileループを実行する

分類Dev

Python:ファイルが指定されていない限り、STDINから読み取りますが、どのように実行されますか?

分類Dev

ロボットでPython関数をキーワードとして実行すると、無限ループが発生します

分類Dev

forループは1回だけ実行されます(python)

分類Dev

Pythonでwhileループが正しく実行されていない-1回の実行後に終了する

分類Dev

matlabからのpythonスクリプトの実行は機能しませんが、ターミナルからは正常に実行されます

分類Dev

Pythonで無限ループを実行しているスレッドを停止するにはどうすればよいですか?

分類Dev

Pythonでスレッドを使用して無限ループを実行する

分類Dev

Pythonでループを実行すると、最後のキーと値のペアが辞書に追加されたままになります

分類Dev

Pythonでループを実行すると、最後のキーと値のペアが辞書に追加されたままになります

分類Dev

このループは無限に実行されますか?

分類Dev

SeleniumはPythonで無限ループに入ります

分類Dev

Python 3.8:forループは無限大になります

分類Dev

Pythonでは、新しい反復が実行される前に、ループ内の条件が再評価されますか?

分類Dev

無限ループのときにC#経由で呼び出されたPythonが値を返さない

分類Dev

Windows:PythonデーモンはIISで実行されませんが、ローカルで実行されます

分類Dev

PythonでSeleniumを使用して要素がページに存在する限り、whileループを実行するにはどうすればよいですか?

分類Dev

Python 3.6.1:forループの後にコードが実行されない

分類Dev

Pythonは、行を読み取るときに無限ループに入ります

Related 関連記事

  1. 1

    このPythonコードが無限に実行されないのはなぜですか?

  2. 2

    Python / Seleniumはページの読み込み時に無限ループを実行しています

  3. 3

    Pythonでループが実行されるのにどのくらい時間がかかりますか?

  4. 4

    ローカルで `python manage.py runserver`を実行すると、権限が拒否されます

  5. 5

    リスト内包表記はPythonシェルでは正常に機能しますが、スクリプトの実行時には無視されます

  6. 6

    Pythonでforループを実行する:最初は正しく実行されますが、残りの実行は正しく実行されません

  7. 7

    Pythonの無限ループ-リストは更新されていますか?

  8. 8

    print()関数は、Python3でforループが終了した後にのみ実行されます

  9. 9

    forループが実行されていませんpython

  10. 10

    プログラムが無限ループを実行しているのはなぜですか?Python

  11. 11

    Pythonモジュールで無限のwhileループを実行する

  12. 12

    Python:ファイルが指定されていない限り、STDINから読み取りますが、どのように実行されますか?

  13. 13

    ロボットでPython関数をキーワードとして実行すると、無限ループが発生します

  14. 14

    forループは1回だけ実行されます(python)

  15. 15

    Pythonでwhileループが正しく実行されていない-1回の実行後に終了する

  16. 16

    matlabからのpythonスクリプトの実行は機能しませんが、ターミナルからは正常に実行されます

  17. 17

    Pythonで無限ループを実行しているスレッドを停止するにはどうすればよいですか?

  18. 18

    Pythonでスレッドを使用して無限ループを実行する

  19. 19

    Pythonでループを実行すると、最後のキーと値のペアが辞書に追加されたままになります

  20. 20

    Pythonでループを実行すると、最後のキーと値のペアが辞書に追加されたままになります

  21. 21

    このループは無限に実行されますか?

  22. 22

    SeleniumはPythonで無限ループに入ります

  23. 23

    Python 3.8:forループは無限大になります

  24. 24

    Pythonでは、新しい反復が実行される前に、ループ内の条件が再評価されますか?

  25. 25

    無限ループのときにC#経由で呼び出されたPythonが値を返さない

  26. 26

    Windows:PythonデーモンはIISで実行されませんが、ローカルで実行されます

  27. 27

    PythonでSeleniumを使用して要素がページに存在する限り、whileループを実行するにはどうすればよいですか?

  28. 28

    Python 3.6.1:forループの後にコードが実行されない

  29. 29

    Pythonは、行を読み取るときに無限ループに入ります

ホットタグ

アーカイブ