0
votes

Vous parcourez une liste de coordonnées?

J'ai deux fonctions où la première génère une liste aléatoire de coordonnées. La deuxième fonction, j'en ai besoin pour parcourir la liste des coordonnées et dessiner chaque coordonnée. Lorsque j'exécute mon code, j'obtiens une erreur et je ne sais pas pourquoi.

Voici mon code:

turtle.goto(selected_map[x]) 

Je pense que l'erreur pourrait être à cause de ceci: p>

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)

il dit que ce n'est pas itérable mais je l'ai fait avant dans un exercice précédent et cela a parfaitement fonctionné, donc je ne sais pas où ça va mal et que faire pour y remédier? C'est la façon d'accéder aux éléments d'une liste, donc je ne sais pas pourquoi cela ne fonctionne pas à moins que je n'accède pas correctement aux éléments de la liste ou devrais-je utiliser une liste imbriquée?


2 commentaires

Vous passez un point unique sur Setpos () . Essayez: TURTLE.STEPOS (sélectionné_map [0])


OUI, à quoi pensais-je, ça marche maintenant, MERCI @MarkMeyer


3 Réponses :


0
votes

Comme @MarkMeyer est en surbrillance, vous passez un point à setpos () quand il a besoin d'une paire.

Votre dernier appel à setpos semble également être indenté incorrectement. Cela semble fonctionner:

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)


1 commentaires

Oui, merci, j'ai réalisé mon problème dès qu'il a été signalé mais pour une raison quelconque, je n'ai pas pu voir le problème avant de poster la question. Merci



0
votes

Votre problème se situe dans les lignes turtle.setpos (selected_map [0] [0]) que vous devez remplacer par turtle.setpos (selected_map [0]) car vous voulez la liste (paire) [x, y] et pas seulement la valeur x.

Mais j'ai remarqué d'autres choses que je changerais certainement:

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])

Vous ne devriez pas ne mettez pas ce code dans la boucle for mais dans l'étoile de la fonction. Et puisque vous commencez sur les premières coordonnées du tableau, vous n'en avez pas besoin dans la boucle for.

Le code final de la fonction print_map devrait être quelque chose comme ceci:

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


0 commentaires

0
votes

Réponse

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 commentaires