2014-05-03 4 views
0

Alors j'écris un jeu pour une compétition.Problème de multiplication et de division en Python

Jusqu'à présent, l'utilisateur a entré un nombre.

if user % 2 == 0 : 

    print("What you entered is an even number.") 
    print("") 

    print("So, according to RULE 1, we must now divide it by 2.") 

    int(user)/ 2 
    thing2 = "So, now we're left with " + str(user) + "." 

    print (thing2) 
else : 

    print("What you entered is an odd number.") 
    print("") 

    print("So, according to RULE 1, we must now multiply it by 3, and add 1.") 

    int(user) * 3 
    user += 1 

    thing2 = "So, now we're left with " + str(user) + "." 
    print (thing2) 

.... Mais la partie int(user) * 3 ne se multiplie pas en fait le nombre de 3, mais elle ajoute un. Pour l'anecdote, j'ai essayé des tas de possibilités comme avoir juste user * 3 (sans la chose int() là-bas) et je suis un débutant chez Python.

Répondre

0

Vous devez dire:

user = int(user)*3

Cela fait la valeur de l'utilisateur l'original fois par 3. Avant, vous n'avez rien fait à la valeur de la multiplication. Vous devez enregistrer la valeur dans une variable

+1

Merci, désolé c'était une erreur tellement stupide. – gingepusscat123

0

Vous devez enregistrer la sortie de cette déclaration:

user = int(user) * 3 

Vous pouvez modifier l'utilisateur à un nombre entier au début afin que vous n'avez pas besoin de continuer à le faire, quelque chose comme:

user = int(user) 
+1

Merci, cela m'a vraiment aidé! Cela fonctionne comme un charme maintenant. – gingepusscat123

0

int(user) * 3 et int(user)/2retour une valeur, mais cette valeur est attribuée . Donc, vous devez faire

user = user * 3 

et

user = user/2 

Comme l'a souligné jonrsharpe dans les commentaires, le int() apparaissant dans votre code est quelque chose de plus compliqué que je ne l'avais pensé. Puisque pendant le contrôle d'égalité user est déjà un nombre, soit vous faites simplement quelque chose de désordonné ou vous essayez de convertir un nombre à virgule flottante en entier (si je me souviens bien, dans python 3.x division convertit les entiers en flottants par défaut). Si c'est le dernier, vous devriez faire user = int(user/2) ou mieux encore, user = user // 2 (encore une fois grâce à jonrsharpe).

+0

Merci, je vais essayer de le changer plus tôt pour gagner du temps plus tard. – gingepusscat123

+0

Il doit déjà être un nombre, sinon votre vérification de l'uniformité ne fonctionnerait pas (elle serait interprétée comme une mise en forme de chaîne de style ancien). – jonrsharpe

+0

@jonrsharpe J'ai édité ma réponse. – Dunno