0
votes

Problème de changement de monnaie (mais avec un nombre minimum de pièces de monnaie)

Donc, je suis nouveau au codage et j'ai eu une mission où je devais faire un programme qui donnerait des changements pour des montants inférieurs à un dollar dans des quartiers, des dimes, des nickels et des cents. Toutefois, l'affectation souhaitait que le programme imprime le nombre minimum de pièces de monnaie nécessaires (par exemple, si je saisis 58 cents, la sortie doit être "2 trimestres, 1 nickel et 3 centimes" au lieu de "2 trimestres, 0 dimes, 1 Nickel et 3 centimes ». Essentiellement, s'il n'y a pas d'une certaine pièce de monnaie, le programme ne devrait pas l'imprimer). Je suis resté coincé sur la façon de savoir comment le faire afin que le programme n'imprime aucune pièce de monnaie qui ne soit pas nécessaire.

C'est ce que j'ai dès maintenant: xxx


5 commentaires

Construisez votre chaîne de sortie de manière dynamique. Si une pièce de monnaie particulière est nulle, n'inclut pas la sortie dans la sortie.


Utilisez une instruction si pour vérifier si le nombre est supérieur à zéro avant de décider s'il faut l'imprimer. Vous pouvez écrire un si instruction pour chaque numéro.


@ kaya3 lorsque vous voulez dire numéro, vous voulez dire la saisie de l'utilisateur ou les pièces de monnaie?


Les chiffres que vous souhaitez imprimer. Vous souhaitez les imprimer si ils sont supérieurs à zéro.


@ kaya3 ah ok, merci.


4 Réponses :


0
votes

Construisez le message de manière dynamique, y compris uniquement des pièces de monnaie avec un nombre non zéro.

messages = []

if quarters:
    messages.append(f"{quarters} quarters")

if dimes:
    messages.append(f"{dimes} dimes")

if nickels:
    messages.append(f"{nickels} nickels")

if pennies:
    messages.append(f"{pennies} pennies")

# print out all message parts, joined together with commas
print(", ".join(messages))


2 commentaires

Je vous remercie beaucoup pour votre aide! Juste hors de curiosité, j'ai cherché le formatage de F et il dit qu'il est beaucoup plus rapide que str.cformat (). Le programme fonctionnera-t-il toujours si un str.cformat () est à la place du format F?


Vous pouvez utiliser n'importe quelle méthode de formatage de chaîne que vous aimez. J'ai utilisé des cordes F dans ma réponse juste parce que je pense qu'ils sont soignés.



0
votes

ou utiliser re : xxx

sortie: xxx


0 commentaires

0
votes

Vous résolvez le problème de l'impression d'une liste avec ces exigences:

  • Plus de trois éléments doivent être séparés par '', ' code> li>
  • L'élément final doit être précédé par et code>, s'il y a plus de 1 élément li> ul>

    Exemples: P>

    • ['1 DIME', '2 trimestres'] code>: '1 DIME et 2 trimestres' CODE> LI>
    • ['3 nickels'] code>: '3 nickels' code> li>
    • ['1 dime', '2 quarts', '3 nickels']] code>: '1 dime, 2 trimestres et 3 nickels' code> li> li> ul> xxx pré>

      Un autre problème que vous résolvez est que vous souhaitez imprimer un numéro avec un nom, avec le nom suivi d'un 's' code> si Le numéro n'est pas 1 code>. Mais, ennuyeusement, si le nom se termine dans 'y' code>, vous souhaitez le remplacer par 'ies' code> p>

      Exemples: P>

    • '0 DIMES' CODE> LI>
    • '1 nickel' code> li>
    • '5 quarts' code> li>
    • '3 pennies' code> li> ul> xxx pré>

      Mais vous souhaitez également éviter d'impressionner n'importe quoi, vous avez besoin 0 code> de. p>

      SO: P> xxx pré>

      Si vous, comme moi, n'aimez pas que le nombre de pièces de monnaie est maintenant dans la même liste que les noms des pièces: P>

      amount = int(input( "Enter amount (1-99): " ))
      coins = [
          amount // 25,
          amount % 25 // 10,
          amount % 25 % 10 // 5,
          amount % 25 % 10 % 5 //1
      ]
      name = ['quarter', 'dime', 'nickel', 'penny']
      print(nice_list([number_noun(c, name) for c, name in zip(coins, names)]))
      


0 commentaires

0
votes

Je pense que les autres intervenants ont suscité des exigences plus strictes que votre affectation a probablement. Votre sortie d'échantillon a des virgules et du mot "et", de sorte qu'ils ont écrit du code pour produire une sortie dans exactement ce format. Je pense qu'ils ont rendu cela plus compliqué qu'il n'a besoin que, à l'aide de listes, de boucles, de tranchance et de regexes pour ce qui est censé être un problème de niveau débutant.

Puisque vous avez dit "Je suis nouveau à Codage et j'ai eu une assignation ", il semble peu probable que votre tâche exige spécifiquement que vous devez produire une production dans un format aussi strict - et si c'était le cas, cela devrait être mentionné dans la question. Sur la base de votre description de la mission, voici ce que je pense qu'un débutant devrait écrire: xxx


0 commentaires