CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Module Turtle

ZiArteta
ZiArteta
Niveau 10
17 novembre 2011 à 20:13:06

Bonsoir,

J'essaie de mettre en pratique mes cours avec un petit programme (vraiment débutant) en python et j'ai un problème avec une boucle.

Quelqu'un saurait me dire pourquoi ça ne marche pas?

http://s3.noelshack.com/old/up/g-69d368a041.jpg

Le message d'erreur:

http://s3.noelshack.com/old/up/gg-1518277060.jpg

Par avance merci :ok:

godrik
godrik
Niveau 30
17 novembre 2011 à 20:19:44

pastebin.com

Aldebran
Aldebran
Niveau 10
17 novembre 2011 à 20:41:19

Dans le deuxième screen il est écrit : "unsupported operand types for *:float and NoneType.

Je ne connais pas Python mais quand on regarde ton code, on voit que tu fais une multiplication entre un float self[0] et un objet other. Apparemment ton objet other passé en paramètre ne doit pas être un float ni un Vec2D.

PS : Ce langage m'a l'air particulièrement moche, on devrait brûler ceux qui ont inventés des langages sans typage fort :(

ZiArteta
ZiArteta
Niveau 10
17 novembre 2011 à 20:48:50

Je comprends pas trop :-(

Le message d'erreur et le code auquel il fait appel je n'y comprends rien :-(

ZiArteta
ZiArteta
Niveau 10
17 novembre 2011 à 20:49:08
  1. Citer Ignorer godrik godrik Voir le profil de godrik
  2. Posté le 17 novembre 2011 à 20:19:44 Avertir un administrateur
  3. pastebin.com

:question:

String[]args
String[]args
Niveau 23
17 novembre 2011 à 21:32:02

Tu peux pas avoir le nom de la méthode appelante sur ton IDE ? Je ne connais pas eric5, mais c'est pas avec une ligne de la librairie turtle que tu vas trouver ton erreur, alors essaye déjà d'avoir un message d'erreur complet. :o))

ZiArteta
ZiArteta
Niveau 10
19 novembre 2011 à 00:09:20

Je ne suis pas beaucoup avancé :-(

]trichelieu[
]trichelieu[
Niveau 10
19 novembre 2011 à 09:34:00

ZiArteta
Posté le 17 novembre 2011 à 20:49:08

  1. Citer Ignorer godrik godrik Voir le profil de godrik
  2. Posté le 17 novembre 2011 à 20:19:44 Avertir un administrateur
  3. pastebin.com

:question:

:d) Copie/colle ton code ici en renplissant le formulaire en bas : http://pastebin.com/ :hap:

Kaoron
Kaoron
Niveau 9
19 novembre 2011 à 13:35:38

«PS : Ce langage m'a l'air particulièrement moche, on devrait brûler ceux qui ont inventés des langages sans typage fort»

Heureusement que python est fortement typé.

Aldebran
Aldebran
Niveau 10
19 novembre 2011 à 20:34:27

"Heureusement que python est fortement typé."

Au temps pour moi, quand j'ai vu que les paramètres formels n'était pas typés et que l'erreur de typage n'était pas détectée à l'appel de la fonction j'ai pensé à du typage faible, mais en fait c'est le typage dynamique qui permet ce genre d'écriture.

ZiArteta
ZiArteta
Niveau 10
20 novembre 2011 à 14:00:25

http://pastebin.com/xWU4eVuF

Merci super pratique ce site, je connaissais pas :-)))

Kaoron
Kaoron
Niveau 9
20 novembre 2011 à 14:13:56

Ok, c'est plus lisible maintenant.

rectangle (scie(100,10), scie(200,10))

La fonction scie n'a pas de retour. Elle renvoie donc implicitement la constante None (de type NoneType).

L'appel ci-dessus peut donc aussi s'écrire :
rectangle(None, None)

Ce n'est vraisemblablement pas ce que tu veux.

ZiArteta
ZiArteta
Niveau 10
20 novembre 2011 à 15:17:45

Ok je vois ce que tu veux dire mais dans ce cas là pourquoi le premier forward se fait?

Et je vois pas trop comment remédier à ce problème :-(

ZiArteta
ZiArteta
Niveau 10
20 novembre 2011 à 15:19:46

Après je te demande pas forcément la réponse, j'aimerais réussir à trouver moi même, c'est juste que je suis vraiment bloqué j'ai aucune idée, si tu pouvais me donner une piste :ok:

Kaoron
Kaoron
Niveau 9
20 novembre 2011 à 17:22:27

Disclaimer : Je vais faire de la grosse vulgarisation, ça ne va pas être précis, ça va être raconté avec les mains, mais à ton niveau, tu n'en verras pas les implications.

Il y a plusieurs choses à voir lors de l'appel :

rectangle (scie(100,10), scie(200,10))

D'abord il y a reconnaissance d'un motif d'appel de fonction avec ses paramètres :

rectangle (expa, expb)

Les valeurs de expa et expb ont besoin d'être connues avant d'évaluer rectangle().
expa est aussi un appel : scie(expc,expd), dont les paramètres expc et expd sont facilement évaluables à l'oeil nu : 100 et 10, deux valeurs entières.
L'appel a scie peut être simplement décomposé :
Tant qu'un compteur, démarré à 0 et incrémenté de 1 à chaque tour de boucle est inférieur au premier paramètre d'appel (longT), un curseur de dessin fait une rotation de 60° vers la gauche, dessine un trait ayant pour longueur le second paramètre de scie (long), fait une rotation de 120° vers la droite, et dessine un autre trait de même longueur, puis effectue encore une rotation de 60° vers la gauche (et retrouve ainsi son orientation initiale). Ce motif dessine une dent de scie, d'où le nom de la fonction, répétée longT fois, chaque dent a une arête de longueur long.
scie ne renvoie aucune valeur avec le mot clé return, la valeur de retour est donc implicitement None.

Donc, pour évaluer l'appel rectangle (scie(100,10), scie(200,10)), on évalue d'abord deux appels à scie, le premier dessine une scie de longueur 100, l'autre une scie de longueur 200.
En fait, cet appel est équivalent à :

a = scie(100,10) # Dessine une scie de longueur 100
b = scie(200,10) # Dessine une scie de longueur 200
rectangle(a, b) # Crashe pitoyablement

Les valeurs dans a et b (ceci est une grosse approximation conceptuelle, en réalité, cela s'approcherait plus de deux étiquettes a et b qu'on aurait attachées aux valeurs) sont None et None...

...on peut donc se demander ce que fait rectangle(None,None) ? Ceci, je te le laisse à titre d'exercice.
Quand même un indice : ce que tu souhaites probablement, c'est écrire une fonction rectangle qui s'utilise comme ceci :

rectangle(longueur_rectangle, largeur_rectangle, longueur_arete_scie)

Et que cette fonction utilise scie pour dessiner un rectangle de cotés longueur_rectangle et largeur_rectangle.
Ce n'est pas ce que tu as fait, tu as appelé rectangle(dessiner une scie, dessiner une scie).

ZiArteta
ZiArteta
Niveau 10
20 novembre 2011 à 18:34:19

Merci pour ta réponse détaillée.

Je vais voir si je parviens à trouver une solution :oui:

ZiArteta
ZiArteta
Niveau 10
20 novembre 2011 à 18:39:36

Juste une précision je cherche pas uniquement à faire un rectangle en dents de scie mais un petit programme qui demande à l'utilisateur s'il souhaite faire un rectangle, un carré, un losange... et s'il souhaite que le dessin soit continu, en pointillé, en dents de scie, en créneau...

Bref avec ce que tu m'as fait comprendre sur ce que prend en compte la fonction et ce qu'elle renvoie je devrais trouver :hap:

ZiArteta
ZiArteta
Niveau 10
20 novembre 2011 à 20:04:24

http://pastebin.com/pzvq1kUM

Bon je sais pas si c'est optimal en terme d'écriture (je parle pas de l'interaction avec l'utilisateur pour le choix du style de trait que j'ai pas encore fait) pour la boucle mais ça fonctionne :)

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware