Ошибка запуска модуля черепахи после установки фона - PullRequest
0 голосов
/ 23 марта 2019

Как исправить ошибку, возникшую после установки фона при рисовании черепахой?

Я начал изучать программирование с книги "Head First Learn to Code". Я должен сделать модуль для гонок на черепахах с графикой черепах Python. Я следовал за шагами один за другим, но когда я попытался запустить код, произошла «ошибка синтаксиса» со строкой «setup ()» в конце кода.

Я сравнил свой ответ с авторским, и все символы были одинаковыми. Затем я скопировал и попытался запустить авторский код. Когда я попытался запустить код, появилась только пустая страница. В коде я должен установить фон, который находится в том же каталоге, что и модуль.

import turtle
import random

turtles = list()

def setup():
    global turtles
    startline = -620
    screen = turtle.Screen()
    screen.setup(1290,720)
    screen.bgpic('pavement.gif')

    turtle_ycor = [-40, -20, 0, 20, 40]
    turtle_color = ['blue', 'red', 'purple', 'brown', 'green']

    for i in range(0, len(turtle_ycor)):
        new_turtle = turtle.Turtle()
        new_turtle.shape('turtle')
        new_turtle.penup()
        new_turtle.setpos(startline, turtle_ycor[i])
        new_turtle.color(turtle_color[i])
        new_turtle.pendown()
        turtles.append(new_turtle)

def race():
    global turtles
    winner = False
    finishline = 590

    while not winner:
        for current_turtle in turtles:
            move = random.randint(0,2)
            current_turtle.forward(move)

            xcor = current_turtle.xcor()
            if (xcor >= finishline):
                winner = True
                winner_color = current_turtle.color()
                print('The winner is', winner_color[0])

setup()
race()
turtle.mainloop()

Я удалил строку screen.bgpic('pavement.gif'), и авторский модуль работал хорошо, но у меня та же «синтаксическая ошибка». (Все символы были одинаковыми, позже я попытался скопировать и вставить каждую часть кода, и ошибка была той же). Как я могу установить этот фоновый рисунок? Сообщение об ошибке:

Traceback (most recent call last):
  File "/home/viccha/.cache/.fr-mVA9RC/headfirstlearntocode-master/ch7/race_step3.py", line 41, in <module>
    setup()
  File "/home/viccha/.cache/.fr-mVA9RC/headfirstlearntocode-master/ch7/race_step3.py", line 11, in setup
    screen.bgpic('pavement.gif')
  File "/usr/lib/python3.6/turtle.py", line 1481, in bgpic
    self._bgpics[picname] = self._image(picname)
  File "/usr/lib/python3.6/turtle.py", line 479, in _image
    return TK.PhotoImage(file=filename)
  File "/usr/lib/python3.6/tkinter/__init__.py", line 3545, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/usr/lib/python3.6/tkinter/__init__.py", line 3501, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "pavement.gif": no such file or directory

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Отображаемое сообщение об ошибке вызвано этой строкой:

screen.bgpic('pavement.gif')

Как вы заметили, вы можете избежать ошибки, закомментировав строку:

# screen.bgpic('pavement.gif')

Тогда ваши черепахи должнырасы просто отлично.Вы можете добавить эту строку обратно, когда / если у вас есть файл pavement.gif, доступный для использования в качестве фонового изображения для окна.Веб-сайт, связанный с книгой, может предоставить это.Но для такой простой программы любое изображение в формате GIF соответствующего размера должно работать нормально - посмотрите на Google Images.

0 голосов
/ 23 марта 2019

Работает нормально для меня (кроме части с расой (), потому что у меня нет функции

Вы забыли импортировать модуль черепахи

import turtle

def setup():
   global turtles
   startline = -620
   screen = turtle.Screen()
   screen.setup(1290,720)
   screen.bgpic('pavement.gif')

#the end of the code:

setup()
race()
turtle.mainloop()
...