2017-09-26 1 views
0

J'essaie de créer un programme de retour de changement qui prend en compte le coût d'un article et l'argent donné et retourne le bon changement en termes de notes, quarts, dimes,Transmettre des nombres fournis par l'utilisateur à des entiers et des flottants en Python

Je suis relativement nouveau en programmation et je suis bloqué en essayant de le diviser. J'ai regardé StackOverflow et trouvé la méthode math.modf(x) pour être pertinente. Cependant, j'ai du mal à le mettre en œuvre.

Pouvez-vous s'il vous plaît laissez-moi savoir pourquoi change et yis not defined?

Merci

import math 

def changereturn(): 

    quarter = 0.25 
    dime = 0.1 
    nickel = 0.05 
    penny = 0.01 

    cost = float(raw_input('Please enter the cost of the item in USD: ')) 
    money = float(raw_input('Please enter the amount of money given in USD: ')) 

    change = money - cost 


    y = math.modf(change) 

    return change 
    return y 

Répondre

1

Une fonction (def) ne peut return une seule fois, mais python vous permet de revenir tuples pour résultat.

Cette mise en œuvre peut être ce que vous avez besoin:

import math 

def changereturn(): 
    quarter = 0.25 
    dime = 0.1 
    nickel = 0.05 
    penny = 0.01 

    cost = float(input('Please enter the cost of the item in USD: ')) 
    money = float(input('Please enter the amount of money given in USD: ')) 

    change = money - cost 

    y = math.modf(change) 

    return change, y 

print(changereturn()) 
+0

Merci. Comment puis-je affecter la partie entière à une variable et la partie flottante à une autre variable? merci – paulnsn

+1

remplacer son 'print (changereturn())' avec mon 'change, y = changereturn()' –

1

Le premier numéro vous est de ne jamais manquer votre fonction changereturn(). Le deuxième problème concerne les deux lignes return de la fonction changereturn(). La deuxième fonction qui envoie le y ne sera jamais exécutée. Vous pouvez revenir (changement, y) et exécutez votre programme:

change, y = changereturn() 

print change 
print y 

Vous devez mettre cela au bas sans indenter. Personnellement, je n'aime pas renvoyer plusieurs choses d'une fonction. Normalement, je suggère de l'attraper comme un uplet puis d'imprimer chaque portion. Votre question ressemble un peu à une tâche pour un étudiant de première année de Comp Sci donc je ne veux pas 1) la résoudre pour vous et 2) la rendre trop complexe.