Multiplication python
Résolu/FerméPhil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 13 sept. 2022 à 11:16
- Multiplication de matrice python
- Citizen code python - Guide
- Geometry dash python ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Afficher une matrice en c ✓ - Forum C
5 réponses
13 sept. 2022 à 10:48
Bonjour à tous les 3'
C'est marrant comme une question "mal" posée peut donner tout et son contraire comme réponse.
NHenry a interprété que jApprendsPython est confronté au fait que la chaine est dupliqué alors qu'il veut obtenir la multiplication mathématique.
A l'inverse, Phil a interprété que c'est la duplication de chaine qui est attendue.
Et franchement quand je lis la question j'ai bien du mal à décider quelle interprétation est la bonne.
ça me mettra 2020 au lieu de 40
cette phrase aurait un peu plus de le sens qu'y trouve Phil avec l'utilisation du futur, "maintenant j'ai 40, mais quand ce sera corrigé j'aurai 2020".
Mais le code
mise = ('Combien tu veux miser ?) # disons 20 gain = mise *2
indique le contraire, 20 est une chaine, donc gain est une chaine dupliquée. Du coup après correction il faudrait un nombre...
@jApprendsPython, il faut prendre un compte un fait à la fois évident et conte intuitif
- tu t'adresses à des inconnus
- nous ne sommes pas dans ta tête
- nous ne sommes pas face à ton écran
- nous n'avons pas suivi tous les essais que tu as fait
- bref, nous ne connaissons pas le contexte
Et du coup toute question un tant soit peu ambiguë amène autant d'interprétations que de personnes qui vont lire ta question.
Par exemple, si j'étais assis à côté de toi quand tu lances ton code et que je vois le résultat qui te déplaît, je n'aurais aucun doute sur celui que tu attends.
Donc à l'avenir, il faut donc essayer de poser la question la plus explicite possible.
Dans ce cas, ça ressemblerait à
maintenant j'obtiens XX et je veux YY
De plus, merci d'utiliser la coloration syntaxique, en forçant bien le site à afficher du Python, voir ici
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Modifié le 13 sept. 2022 à 11:01
Bonjour,
Pour reprendre / compléter les réponses déjà données :
- Multiplier une chaîne de caractère s par un entier n construit la chaîne s répétée n fois.
- Quand tu saisis une valeur par exemple via la fonction input, la valeur retournée par cette fonction est une chaîne de caractère. Si tu considères que cette valeur est un entier, c'est à toi de faire explicitement la conversion.
- Comme la conversion peut échouer (par exemple si l'utilisateur a tapé abc), c'est à ton programme de gérer ce qui doit être fait en cas de saisie invalide. Lorsque la saisie est invalide, une exception est levée.
- Si ton programe ne la rattrape pas, alors le programme plante en affichant l'exception et d'où elle a été levée.
- Si ton programme rattrape l'exception avec un bloc try... except, tu peux personnaliser son comportement (et par exemple faire en sorte qu'il redemande une valeur à l'utilisateur).
Code :
En conclusion, voici à quoi pourrais ressembler ton programme sous sa forme la plus simpliste :
s = input() n = int(s) print(n * 2)
... et sous une forme plus complète ;
def input_int(prompt=""): n = None while n is None: try: s = input(prompt) n = int(s) except ValueError: print(f"Saisie invalide, '{s}' ne peut pas être convertie en entier !") return n n = prompt_int("Veuillez saisir un entier : ") print(n * 2)
Résultat :
Veuillez saisir un entier : abc
Saisie invalide, 'abc' ne peut pas être convertie en entier !
Veuillez saisir un entier : 32
64
Bonne chance
12 sept. 2022 à 23:18
Il faut convertir la chaine en valeur entière.
"python string to int" sur ton moteur de recherche.
Modifié le 13 sept. 2022 à 08:57
Bonjour,
Si tu saisis '20' et que tu veux obtenir '2020', il faut laisser 20 sous forme de string
et ensuite faire gain = mise *2
Quand on fait ça sur une string, ça la duplique
Ensuite, tu peux convertir ça en int si tu veux
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question13 sept. 2022 à 11:16
Bonjour,
C'est vrai que c'était ambigu ...
Moi, en lisant "me retourne 2020 au lieu de 40,", j'avais compris qu'il voulait que ça retourne 2020
alors qu'en fait, il veut nous dire que ça retourne 2020 alors qu'il voudrait 40
(et effectivement comme input retourne une string, on obtient 2020...)