2011-11-03 3 views
-3

J'ai ce problème ---en Python Table de multiplication

écrire du code qui imprimera une table de multiplication pour 10 entiers positifs à travers les colonnes et 10 entiers positifs vers le bas les lignes. Demander à l'utilisateur les valeurs de départ pour les colonnes et les lignes.

Ma tentative après une explication d'une autre question, qui ne s'imprime pas comme Id l'attend. Où dois-je appeler les déclarations d'impression et ce qui ne va pas avec les itérations

row = int(raw_input("Enter the first row number: " )) 
col = int(raw_input("Enter the frist column number: ")) 

lastRow = row + 10 
lastCol = col + 10 


while (row < lastRow): 
    print "%4d" % (col * row) 
    while(col < lastCol): 

     print "%4d" % (col * row), 
     col += 1 

    print "%4d" % (col * row) 
    row += 1 

est ici un second coup, mieux, mais pas ce que je pensais obtenir

 row = int(raw_input("Enter the first row number: " )) 
    col = int(raw_input("Enter the frist column number: ")) 

    lastRow = row + 10 
    lastCol = col + 10 

    x=row 
    y=col 

    while (x < lastRow): 
     while(y < lastCol): 
      y += 1 
      print "%4d" % (y * x) 
     x += 1 

Désolé le poste en double, je ne l'ai pas savoir que c'était une mauvaise étiquette

+3

duplication possible de [table d'entrée et de multiplication utilisateur Python] (http://stackoverflow.com/questions/7990991/python-user-input-and-multiplication-table) – agf

Répondre

0

modifier rapide qui fait le tour:

row = int(raw_input("Enter the first row number: " )) 
col = int(raw_input("Enter the frist column number: ")) 

lastRow = row + 5 
firstCol = col 
lastCol = col + 5 

while (row < lastRow): 
    while(col < lastCol): 
     print "%4d" % (col * row), 
     col += 1 

    col = firstCol 
    row += 1 
    print 

problèmes dans votre code:

  1. col maintenu à lastCol valeur la fin de l'itération du premier cycle. Il doit être remis à zéro au point de départ après chaque ligne
  2. Trop incrément d »
  3. rowprint inutiles doivent être faites à l'intérieur de la première while

Et un conseil: si vous êtes coincé avec des problèmes comme celui-ci, obtenir un morceau de papier, posez des valeurs de départ simples et petites: row = 1, col = 1, jusqu'à 3 au lieu de 10. Et reproduisez votre algorithme à la main, étape par étape.

+0

Merci je ne comprenais pas que l'incrément de ligne devait être dans le premier moment et, j'ai juste oublié que je devais enregistrer la valeur intital, le codage est encore étranger à moi, – user1020349

3

(1) Votre variable col ne se réinitialise pas pour chaque nouvelle ligne. Il ne fait que s'incrémenter.

Peut-être utiliser une autre paire de variables, comme r et c pour l'itération elle-même. Ou stocker la ligne et la col d'origine dans des variables nommées différemment. (2) Votre indentation des deux dernières lignes semble incorrecte - ne devrait-elle pas être à l'intérieur de la première boucle while?

(3) Vous n'avez pas besoin d'autant d'instructions d'impression. Vous ne devriez avoir besoin que d'une instruction print dans la boucle interne et une autre instruction (vide) pour terminer chaque ligne.

Mise à jour: S'il vous plaît ne pas poser des questions en double

+0

a corrigé la faute de frappe ici, donc je dois stocke la rangée et le col d'origine à l'extérieur de la boucle? – user1020349

+0

@ user1020349: Oui. Voir la réponse de Stanislav. – jwd

+0

Désolé pour le poste en double, je ne savais pas que c'était une mauvaise étiquette – user1020349

Questions connexes