Multiplication python

Résolu/Fermé
jApprendsPython Messages postés 1 Date d'inscription lundi 12 septembre 2022 Statut Membre Dernière intervention 12 septembre 2022 - Modifié le 13 sept. 2022 à 10:44
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

Bonjour,

J'aimerais savoir comment multiplier une valeur qui est associée à une chaîne de valeurs.

Par exemple :

mise = ('Combien tu veux miser ?) # disons 20
gain = mise *2

... me retourne 2020 au lieu de 40.

5 réponses

Whismeril Messages postés 19147 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 3 octobre 2024 919
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


1
mamiemando Messages postés 33302 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 3 octobre 2024 7 793
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

1
NHenry Messages postés 15156 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 29 septembre 2024 335
12 sept. 2022 à 23:18

Il faut convertir la chaine en valeur entière.

"python string to int" sur ton moteur de recherche.


0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
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

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
13 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...)

0