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?
3 Réponses :
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)
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
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)
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])
Vous passez un point unique sur
Setpos () code>. Essayez:
TURTLE.STEPOS (sélectionné_map [0]) code>
OUI, à quoi pensais-je, ça marche maintenant, MERCI @MarkMeyer