Partage
  • Partager sur Facebook
  • Partager sur Twitter

France IOI - Table de multiplication - Niveau 1

9 juillet 2018 à 19:09:47

Bonjour à tous, 

Je débute dans les variables et l'exercice "Table de multiplication" de niveau sur le site France IOI me pose problème.

Voici l'énoncé :

C'est l'heure du cours de mathématiques et aujourd'hui les enfants vont travailler la multiplication. Malheureusement, l'institutrice ne retrouve que la petite table de multiplication, qui va jusqu'à 5 fois 5, mais pas la grande table, qui va jusqu'à 20 fois 20. Elle souhaiterait que vous lui imprimiez une nouvelle table allant jusqu'à 20 fois 20, pour qu'elle puisse l'afficher au mur.

Ce que doit faire votre programme :

Voici à quoi ressemble la table de multiplication allant jusqu'à 5 fois 5.

1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25

Écrivez un programme qui affiche une table de multiplication allant jusqu'à 20 fois 20.

Voici mon code :

num = 0 plus = 1 for loop in range (20): num = num + 1 print(num, end = " ") print() for loop in range (19): plus = plus + 1 print(plus)

Je n'arrive  pas à comprendre comment multiplier par deux à chaque répétition pour la ligne suivante ?

Je vous remercie par avance votre aide.

Bonne soirée,

  • Partager sur Facebook
  • Partager sur Twitter
10 juillet 2018 à 9:49:04

Bonjour,

Premièrement utilise les balises </> pour copier ton code, la c'est illisible c'est tout à la suite on y comprends rien.

Sinon tu peux essayer de faire quelque chose comme ca :

longueur_table = []
for i in range(20):
   longueur_table.append(i+1)
 
for i in range(20):
   ligne_affich= []
   ligne_affich = [valeur*(i+1) for valeur in longueur_table]
   print(ligne_affich)

Tu peux reprendre ce bout de code pour en faire une fonction, ou le modifier pour qu'il corresponde mieux à ce que tu veux faire



-
Edité par Jojuss 10 juillet 2018 à 9:52:30

  • Partager sur Facebook
  • Partager sur Twitter
10 juillet 2018 à 18:08:32

Merci pour ta réponse Jojuss,

Effectivement, désolé pour l'affichage de mon code. J'ai fait un copié collé rapide, sans vérifier.

A mon niveau chez France IOI, j'ai seulement appris à faire des variables et des boucles comme ceci : "for loop in range() :" et les imbriquer entre elle.

Du coup je ne comprends pas les fonctions que tu me decris et j'ai mal à les utiliser dans mon exercice.

  • Partager sur Facebook
  • Partager sur Twitter
10 juillet 2018 à 19:07:49

salut,

En n'utilisant que de simples boucles for :

table = []
for i in range(1, 21):
    line = []
    for j in range(1, 21):
        line.append(i*j)
    table.append(l)

tu obtiens la table sous forme de liste de liste. Ou pour l'afficher seulement :

for i in range(1, 21):
    for j in range(1, 21):
        print(i*j, end=' ')



  • Partager sur Facebook
  • Partager sur Twitter
11 juillet 2018 à 11:38:58

Super merci Nicolas pour ton aide !
  • Partager sur Facebook
  • Partager sur Twitter
3 février 2020 à 19:11:34

C'est l'heure du cours de mathématiques et aujourd'hui les enfants vont travailler la multiplication. Malheureusement, l'institutrice ne retrouve que la petite table de multiplication, qui va jusqu'à 5 fois 5, mais pas la grande table, qui va jusqu'à 20 fois 20. Elle souhaiterait que vous lui imprimiez une nouvelle table allant jusqu'à 20 fois 20, pour qu'elle puisse l'afficher au mur.

Ce que doit faire votre programme :

Voici à quoi ressemble la table de multiplication allant jusqu'à 5 fois 5.

1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25 
Écrivez un programme qui affiche une table de multiplication allant jusqu'à 20 fois 20.
  • Partager sur Facebook
  • Partager sur Twitter
6 février 2020 à 9:14:41

Ce code passe le test :ninja:

print("""1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60
4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120
7 14 21 28 35 42 49 56 63 70 77 84 91 98 105 112 119 126 133 140
8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160
9 18 27 36 45 54 63 72 81 90 99 108 117 126 135 144 153 162 171 180
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200
11 22 33 44 55 66 77 88 99 110 121 132 143 154 165 176 187 198 209 220
12 24 36 48 60 72 84 96 108 120 132 144 156 168 180 192 204 216 228 240
13 26 39 52 65 78 91 104 117 130 143 156 169 182 195 208 221 234 247 260
14 28 42 56 70 84 98 112 126 140 154 168 182 196 210 224 238 252 266 280
15 30 45 60 75 90 105 120 135 150 165 180 195 210 225 240 255 270 285 300
16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256 272 288 304 320
17 34 51 68 85 102 119 136 153 170 187 204 221 238 255 272 289 306 323 340
18 36 54 72 90 108 126 144 162 180 198 216 234 252 270 288 306 324 342 360
19 38 57 76 95 114 133 152 171 190 209 228 247 266 285 304 323 342 361 380
20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 400""")



  • Partager sur Facebook
  • Partager sur Twitter
6 février 2020 à 14:10:11

Je suis sur qu'en plus @thelinekioubeur a écrit un script pour pas avoir à taper tous les chiffres :lol:
  • Partager sur Facebook
  • Partager sur Twitter
6 février 2020 à 14:27:13

Un script ou un peu de excel !
  • Partager sur Facebook
  • Partager sur Twitter
21 février 2020 à 14:22:32

bonjour, je suis aussi bloque sur ce problème mais moi c'est sur l'espace entre les chiffres, pouvez-vous m'aider?

ligne1=1
for loop in range(20):
   ligne2=1
   for loop in range(20):
      print(ligne1*ligne2, end="")
      ligne2=ligne2+1
   ligne1=ligne1+1
   print()

 voici le problème



-
Edité par KyllianBlanchon1 21 février 2020 à 14:28:12

  • Partager sur Facebook
  • Partager sur Twitter
21 février 2020 à 14:26:36

essaye end=" " au lieu de end=""
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2021 à 11:58:59

Jai moi aussi un probléme avec cest exercice on me demande de mettre un bloc vois main
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2021 à 12:19:07

void main ? c'est plutôt du C/C++ en langage alors
  • Partager sur Facebook
  • Partager sur Twitter
26 février 2021 à 8:47:24

Bonjour.

Je contribue à ce déterrage. Pas bien !!!

Voici comment j'aurais résolu la problématique :

def MultiplyElemOfList(TheList, Number):
    return [TheList[_] * Number for _ in range(20)]

for i in range(1,21):
    print(MultiplyElemOfList([_ for _ in range(1,21)], i))



  • Partager sur Facebook
  • Partager sur Twitter

PB68

26 février 2021 à 22:35:20

for i in range(1,21): print(*range(i,i*21,i))

-
Edité par josmiley 26 février 2021 à 22:37:34

  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

27 février 2021 à 0:03:37

josmiley a écrit:

for i in range(1,21): print(*range(i,i*21,i))


qui n'est pas un vrai oneliner. En voici un :

[print(*range(n,20*n+1, n)) for n in range(1, 21)]



-
Edité par PascalOrtiz 27 février 2021 à 0:05:55

  • Partager sur Facebook
  • Partager sur Twitter
27 février 2021 à 3:55:31

Je connais bien cette institutrice :) Elle est très pointilleuse sur la présentation.
Elle veut que les colonnes soient alignées.
[print(*((' '*4+str(i))[-4:] for i in range(n,20*n+1,n)),sep='') for n in range(1,21)]
  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

27 février 2021 à 8:03:20

PierrotLeFou a écrit:

Je connais bien cette institutrice :) Elle est très pointilleuse sur la présentation.
Elle veut que les colonnes soient alignées.
[print(*((' '*4+str(i))[-4:] for i in range(n,20*n+1,n)),sep='') for n in range(1,21)]


for i in range(1,21): print(('{:>4}'*20).format(*range(i,i*21,i)))


  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

27 février 2021 à 9:20:02

Les chaînes formatées me paraissent en effet adaptées pour obtenir ce genre d'effet. On peut rendre les tables de multiplication plus lisibles encore, comme ICI.
  • Partager sur Facebook
  • Partager sur Twitter
27 février 2021 à 17:33:51

@PascalOrtiz:
Je n'ai pas trouvé dans le lien cette possibilité:
n=123
print(f"n vaut:{n:>4}")
Ça me réserve bien 4 espaces pour le nombre.

  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

27 février 2021 à 17:48:29

PierrotLeFou a écrit:

@PascalOrtiz:
Je n'ai pas trouvé dans le lien cette possibilité:
n=123
print(f"n vaut:{n:>4}")
Ça me réserve bien 4 espaces pour le nombre.


Oui. Voir les deux premiers paragraphes de cette section.
  • Partager sur Facebook
  • Partager sur Twitter
27 février 2021 à 19:29:59

Voici ma dernière version, mais sans le f-string. On ne peut pas mettre plusieurs choses formatées dans un { }
[print('',("{:>3}"*20).format(*range(n,20*n+1,n))) for n in range(1,21)]
  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

27 février 2021 à 19:50:11

PierrotLeFou a écrit:

On ne peut pas mettre plusieurs choses formatées dans un { }


Comprends pas la remarque, que faut-il entendre par "choses formatées" ? Tu parles des champs de formatage ou des spécificateurs de formatage ? Un champ correspond à exactement un seul objet, l'objet correspondant dans la liste des arguments donnée à format. Et c'est pareil pour les f-string, c'est l'objet correspondant de l'espace de noms.

-
Edité par PascalOrtiz 27 février 2021 à 19:51:39

  • Partager sur Facebook
  • Partager sur Twitter
28 février 2021 à 1:46:39

J'ai essayé ceci même si je ne croyais pas vraiment que ça marcherais:
print(f"{*range(20):>4}")
Et c'est ce que j'ai obtenu:
  File "C:\Users\Administrateur\Documents\Sources\am.py", line 4                                                       
    (*range(20))                                                                                                       
     ^                                                                                                                 
SyntaxError: f-string: can't use starred expression here                                                                
Et je me suis trompé de solution, tout est mêlé dans ce fichier ...
[print(("{:>4}"*20).format(*range(n,20*n+1,n))) for n in range(1,21)]
  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

10 mai 2022 à 13:11:22

Salut!!!

Quelqu'un peut m'aider

Créez une page web multiplication.html qui contiendra un formulaire. Ce formulaire contiendra deux champs de texte et un bouton de soumission. Il faudra faire en sorte que lorsque le formulaire est soumis, la page courante soit rechargée. Sous le formulaire, si celui-ci a été soumis, vous afficherez un tableau contenant les tables de multiplication. Les tables auront m lignes et n colonnes, où m est la valeur du premier champ du formulaire, et n est la valeur du deuxième champ du formulaire (avant soumission).

  • Partager sur Facebook
  • Partager sur Twitter
10 mai 2022 à 13:48:55

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

Manque de précisions

Vous êtes ici sur un forum d'entraide communautaire et non pas sur un forum de demande de service, le but n'est donc pas de fournir une réponse toute faite ou de directement fournir la solution à quiconque viendrait sans la moindre trace. Afin d'obtenir de l'aide et une solution à votre problème, il est fortement recommandé de présenter clairement l'état actuel du problème en nous fournissant :

  • Un descriptif clair et précis du problème
  • La tentative actuelle de résolution que vous avez effectué
  • Le résultat attendu et le résultat actuel
  • Toutes pistes de recherches pouvant aider à la résolution

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