Partage
  • Partager sur Facebook
  • Partager sur Twitter

creer un damier 40x40 en Python.

probleme d'indentation et de boucle.

22 avril 2018 à 18:28:54

Bonjour je dois creer un damier 40x40 en Python. Language que je decouvre a peine.

Voici mon code, mais cela ne fonctionne pas, je suis desespere, car cela fait plusieurs heures que j'essaie plusieurs idee et rien ne fonctionne.

for loop in range(40):
   for loop in range(40):  
      print("OX", end = "") 
         for loop in range(40):
            print("XO", end= "")
print() 

Merci d'avance:)



  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
22 avril 2018 à 21:06:24

  • Créer un damier de 40x40 quoi ? Peux-tu préciser, car malgré ton code, on sait pas trop à quoi doit ressembler ton tableau.
  • Des messages d'erreur ?
  • Est-ce plus un problème python ou un problème algorithmique ?

Dire j'arrive pas, je suis désespéré n'est et ne sera jamais une indication potentiellement intéressante sur un forum...

  • Partager sur Facebook
  • Partager sur Twitter
22 avril 2018 à 21:42:30

Yop.

Je connais pas par coeur la syntaxe de Python, alors je dis peut-être n'importe quoi, mais un truc me turlupine.

Tu as trois boucles imbriquées. À moins d'essayer de réaliser un damier en 3D, il y a un problème.

Ta troisième boucle, remplace-la par un test pour savoir si l'index de ton for() est pair ou impair. (Tu vas devoir le faire à deux endroits, ou faire deux tests. Ça devrait déjà te mettre sur la voie.)

Et imprime séparément les "X" et les "O".

(En supposant que tu cherches bien à obtenir un damier genre :

X  O  X  O

O  X  O  X

X  O  X  O

O  X  O  X

Si c'est pas le cas, explique mieux.)

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
22 avril 2018 à 21:53:38

Si c'est dans ce sens là qu'il souhaite son tableau, alors python je connais

>>> for i in range(40):
...     for j in range(40):
...         if i%2==0: motif = 'XO'
...         else: motif = 'OX'
...         print(motif, end='')
... 



  • Partager sur Facebook
  • Partager sur Twitter
22 avril 2018 à 23:08:12

Bonsoir,

En fait c'est complique pour moi , car dans le cours que je fais...nous n'avons pas encore vu le "if, else"...j'ai des intructions et on doit seulement utiliser:

for loop in range(40):/

print()

print("OX, end="")

print("XO, end="")

Donc je  decrouvre les algos et  Phyton en meme temps (d'ou mon sentiment d'etre totalement perdu).

Le damier que nous devons faire est :

OXOXOXO(40 fois)

XOXOXO(40 fois)

de gauche a droite, et de haut en bas.

for loop in range(40):
      print("OX", end="")
print()
for loop in range(40):
   print("XO", end="")
print()

Ce code la me donne une ligne de chaque (OXOXO (40 fois) etc) et une ligne de (XOXO(40 fois) etc)..mais je n'arrive pas a en avoir 40 ( de haut en bas).Peut-etre que en fait je devrai faire 20 et 20 (20 de chaque ligne)?

Maintenant les "conseils" sont d'imbriques deux boucles dans une...mais comme je suis une tres grande debutante, je ne maitrise meme pas trop le vocabulaire. J'ai cherche une bonne partie de l'apres-midi...

Merci a vous deux de votre aide en tout cas.

Oldprogrammer, ce que tu me donnes comme solution ne me parle pas du tout, car je n'ai pas appris cela encore.

Chomp, il faut que OX XO soit colles ensemble, c'est quoi le truc des paires ou impaires?

Je suis desolee,j'en fais pas expres mais j'ai commence les algos et ce cours il y deux jours seulement...(avec des jeux, le labyrtinte, la recette magique,le fourre etc...).

Merci encore une fois.

  • Partager sur Facebook
  • Partager sur Twitter
22 avril 2018 à 23:29:44

En fait, je pense que tu expliques mal comment tu veux ton damier.

FiranaNiu a écrit:

Le damier que nous devons faire est :

OXOXOXO(40 fois)

XOXOXO(40 fois)



Montre précisément ce que tu cherches à obtenir, mais avec 3 itérations au lieu de 40.

  • Partager sur Facebook
  • Partager sur Twitter
22 avril 2018 à 23:50:20

Bonsoir,

Merci Chomp.

Je ne sais pas ce que c'est une iteration.

Il me faut OX(40 fois) de gauche a droite

puis 

XO (40) de gauche a droite

Je fais ecrire 4 fois...mais en fait c'est 40 ( de gauche a droite et de haut en bas; afin de creer un damier)mais sans espace entre les lignes.

oxox

xoxo

oxox

xoxo

Merci de ton aide.

-
Edité par FiranaNiu 22 avril 2018 à 23:54:33

  • Partager sur Facebook
  • Partager sur Twitter
23 avril 2018 à 3:05:00

D'accord, j'ai compris.

Alors, description algorithmique très vite fait :

Pour chaque ligne d'index A (de 1 à 40) {

    Pour chaque colonne (de 1 à 20, puisqu'on imprime les éléments 2 par 2) {

        imprimer "OX" si A est pair

        sinon, imprimer "XO"

    }

}


Essaie de reprendre ton code de zéro, et de créer exactement ce que je viens de décrire.

Tu seras obligée d'utiliser un if(), toutes les solutions sans if() auxquelles je pense, elles nécessiteraient des astuces inutilement compliquées (Et qui ne marcheraient peut-être même pas en Python). C'est l'occasion d'apprendre. ;)

Sinon, il y a un sous-forum pour Python uniquement : https://openclassrooms.com/forum/categorie/langage-python (J'ai pas vu ton sujet là-bas.)

  • Partager sur Facebook
  • Partager sur Twitter
23 avril 2018 à 13:22:50

Bonjour Chomp,

En fait voici la solution. Sans de "if".

for loop in range(20):

    for loop in range(20):

        print("OX", end = "")

    print() 

    for loop in range (20):

        print("XO", end="") 

    print()

Merci de ton aide, tres bonne journee.

xoxo

  • Partager sur Facebook
  • Partager sur Twitter
27 novembre 2019 à 18:05:22

bonjour j'ai moi même un question sur ton algorithme

j'ai l'ai copié  bêtement  j'ai voulue le refaire  

et j'ai remarqué que si je met pas les espaces   il ne marchait pas

comment peux t on savoir le nombre  d'espace qu'il faut  mettre  pour que l'algorythme  

fasse  le damier  

OXOXOX

XOXOXO   ??? 

  • Partager sur Facebook
  • Partager sur Twitter
28 novembre 2019 à 10:31:33

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL