Итерация по списку координат? - PullRequest
0 голосов
/ 10 апреля 2020

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

Вот мой код:

import random
import turtle

def generate_map(x_range, y_range, locations):

  generated_map = []
  for x in range(locations):
    random_x_points = random.randint(-x_range,x_range)
    random_y_points = random.randint(-y_range,y_range)
    generated_map.append([random_x_points, random_y_points])
  return generated_map

copied_map = generate_map(300,300,10)
print("Map Points are:", copied_map)

def print_map(speed, color, thickness, selected_map):
  print("printing map")
  turtle.penup()
  turtle.setpos(selected_map[0][0])
  turtle.pendown()
  for x in range(len(selected_map)):
        turtle.speed(speed)
        turtle.pencolor(color)
        turtle.pensize(thickness)
        turtle.goto(selected_map[x])
  turtle.setpos(selected_map[0][0])

print_map(5,"green",5,copied_map)

Я думаю, что ошибка может быть из-за этого:

turtle.goto(selected_map[x]) 

он говорит, что это не повторяется, но я делал это раньше в предыдущем упражнении, и он работал отлично, поэтому я не знаю, где происходит ошибка и что делать, чтобы это исправить? Это способ доступа к элементам в списке, поэтому я не уверен, почему он не работает, если я не обращаюсь к элементам из списка правильно или мне следует использовать вложенный список?

Ответы [ 3 ]

0 голосов
/ 10 апреля 2020

Ваша проблема в строках turtle.setpos(selected_map[0][0]), которые вы должны заменить на turtle.setpos(selected_map[0]), потому что вам нужен список (пара) [x, y], а не только значение x.

Но я заметил другие вещи, которые я бы определенно изменил:

        turtle.speed(speed)
        turtle.pencolor(color)
        turtle.pensize(thickness)

Вы не должны помещать этот код внутри для l oop, но в звездочку функции. И так как вы начинаете с первых координат массива, вам не нужно это в for l oop.

Таким образом, окончательный код функции print_map должен выглядеть примерно так:

def print_map(speed, color, thickness, selected_map):
    print("printing map")
    turtle.speed(speed)
    turtle.pencolor(color)
    turtle.pensize(thickness)
    turtle.penup()
    turtle.setpos(selected_map[0])
    turtle.pendown()
    for x in range(1,len(selected_map)):
        turtle.goto(selected_map[x])
    turtle.setpos(selected_map[0])
0 голосов
/ 10 апреля 2020

Ответ

import random
import turtle

def generate_map(x_range, y_range, locations):

  generated_map = []
  for x in range(locations):
    random_x_points = random.randint(-x_range,x_range)
    random_y_points = random.randint(-y_range,y_range)
    generated_map.append([random_x_points, random_y_points])
  return generated_map

copied_map = generate_map(300,300,10)
print("Map Points are:", copied_map)



def print_map(speed, color, thickness, selected_map):
  print("printing map")
  turtle.penup()
  turtle.setpos(selected_map[0])
  turtle.pendown()
  for x in range(len(selected_map)):
      for i in selected_map:
        turtle.speed(speed)
        turtle.pencolor(color)
        turtle.pensize(thickness)
        turtle.goto(selected_map[x])
  turtle.setpos(selected_map[0])
0 голосов
/ 10 апреля 2020

Как подчеркнул @MarkMeyer, вы передаете точку на setpos(), когда ей нужна пара.

Ваш последний вызов на setpos также имеет неправильный отступ. Кажется, это работает:

import random
import turtle

def generate_map(x_range, y_range, locations):

  generated_map = []
  for x in range(locations):
    random_x_points = random.randint(-x_range,x_range)
    random_y_points = random.randint(-y_range,y_range)
    generated_map.append([random_x_points, random_y_points])
  return generated_map

copied_map = generate_map(300,300,10)
print("Map Points are:", copied_map)

def print_map(speed, color, thickness, selected_map):
  print("printing map")
  turtle.penup()
  turtle.setpos(selected_map[0])
  turtle.pendown()
  for x in range(len(selected_map)):
        turtle.speed(speed)
        turtle.pencolor(color)
        turtle.pensize(thickness)
        turtle.goto(selected_map[x])
        turtle.setpos(selected_map[0])

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