#python #turtle-graphics
#python #turtle-графика
Вопрос:
Как мне исправить ошибку, возникшую после установки фона при рисовании с помощью turtle?
Я начал изучать программирование с книги «Сначала научись программировать». Я должен создать модуль для создания черепашьей гонки с черепашьей графикой 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
Комментарии:
1. Пожалуйста, покажите всю ошибку sytanx в вашем коде
Ответ №1:
У меня все работало нормально (за исключением части с race (), потому что у меня нет функции
Вы забыли импортировать модуль turtle
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()
Комментарии:
1. И? Также, если бы вы могли вставить сюда сообщение об ошибке, которое было бы полезно
Ответ №2:
Показанное сообщение об ошибке вызвано этой строкой:
screen.bgpic('pavement.gif')
Как вы заметили, вы можете избежать ошибки, закомментировав строку:
# screen.bgpic('pavement.gif')
Тогда ваши turtles должны работать просто отлично. Вы можете добавить эту строку обратно, когда / если у вас есть pavement.gif
файл, доступный для использования в качестве фонового изображения для окна. Веб-сайт, связанный с книгой, может предоставить это. Но для такой простой программы любое GIF-изображение соответствующего размера должно работать нормально — посмотрите на Google Images.
Комментарии:
1. У меня есть pavement.gif в той же папке, что и код. Я попытался скопировать его в другую папку, потому что исходная папка является zip-папкой, но это не сработало