Кто-нибудь может объяснить это странное происхождение черепахи питона? - PullRequest
1 голос
/ 04 августа 2009

Если вы не знаете, python turtle - это приложение, помогающее людям изучать python. Вам предоставляется интерпретатор Python и экранная черепаха, которой вы можете передать инструкции по использованию Python.

go (10) заставит черепаху двигаться на 10 пикселей поворот (10) приведет к повороту на 10 градусов по часовой стрелке

Теперь посмотрите на это

alt text

код:

import random
while(1):
    r = random.randint(1,10)
    go (r)
    r = random.randint(-90,90)
    turn (r)

Кто-нибудь может объяснить это поведение? Обратите внимание на прямую линию. Что-то не так с случайным модулем питонов?

Ответы [ 3 ]

7 голосов
/ 04 августа 2009

При отладке подобной проблемы может быть целесообразно распечатать значение каждой инструкции по мере ее выполнения. Надеюсь, в вашей среде черепах есть способ напечатать значения в какое-нибудь окно на экране. Вы можете сделать что-то вроде этого:

while(1):
     r = random.randint(1,10)
     print "going:", r
     go (r)
     r = random.randint(-90, 90)
     print "turning:", r
     turn (r)

Эта техника называется под многими именами, но мне нравится «Если есть сомнения, распечатайте больше». Это может дать некоторое представление о том, почему ваша черепаха демонстрирует поведение, которое вы видите.

1 голос
/ 05 августа 2009

Я создатель PythonTurtle .

Прежде всего, для меня большая честь видеть первый вопрос об этом в StackOverflow.

По поводу вашего вопроса: я пытался запустить код, но он не выдал ошибку, но поскольку это связано со случайностью, я не могу воспроизвести то, что произошло на вашем компьютере.

Это похоже на ошибку, но я не могу точно догадаться, что ее вызывает. Если с вами снова возникнет такая ошибка, предпочтительно, когда случайность не задействована, я буду признателен, если вы отправите мне скриншот и фрагмент кода. Моя почта cool-rr@cool-rr.com.

0 голосов
/ 04 августа 2009

Попробуйте распечатать значения. Вот небольшая программа на Python, основанная на вашем фрагменте кода, которая делает это:

import random
while(1):
  distance = random.randint(1,10)
  angle = random.randint(-90, 90)
  print distance, angle

Я попробовал это сам, и угол нигде не застревает. Я подозреваю, что в python turtle может быть какая-то ошибка, но без попыток в этой среде сказать сложно.

Есть ли способ спросить черепаху питона о текущем угле черепахи? Вы можете также распечатать это значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...