L'utilisateur saisit deux entrées, d'une part le nombre de dés, nbd (que l'on limitera pratiquement à 10) et, d'autre part la somme, s, comprise entre nbd et 6.nbd. Le programme calcule et affiche le nombre de façons de faire s avec les NBD dés.
Pour ce problème , je voulais utiliser la récursivité , ce qui me permettra de générer plusieurs boucles .
Salut, pour utiliser une fonction récursive, il faut commencer par se demander quelle est la condition d'arrêt. Ici, la fonction ne s’appellera pas quand c'est le dernier dé (la somme voulue est atteinte et la combinaison affichée) ; sinon, il faut lancer un dé avec un valeur bornée (pour que la somme voulue reste atteignable) et rappeler la fonction avec un dé en moins...
#!/usr/local/bin/python2.7
# -*-coding:Utf-8 -*
def lancer_de(serie, somme, somme_voulue, nbd_restant):
if nbd_restant == 1: # le dernier dés
serie.append(somme_voulue - somme)
print(serie)
else:
manque = somme_voulue - somme
nbd_restant -= 1
if manque > 1 + 6 * nbd_restant:
mini = manque - 6 * nbd_restant
else:
mini = 1
if manque < 6 + nbd_restant:
maxi = manque - nbd_restant
else:
maxi = 6
for i in range(mini, maxi+1):
copie = list(serie)
copie.append(i)
lancer_de(copie, somme+i, somme_voulue, nbd_restant)
if __name__ == '__main__':
#TODO saisie nbd et somme_voulue + controles
nbd = 2
somme_voulue = 6
assert(1 <= nbd <= 6)
assert(nbd <= somme_voulue <= 6 * nbd)
print("Faire {} avec {} dés à 6 faces :".format(somme_voulue, nbd))
lancer_de([], 0, somme_voulue, nbd)
- Edité par jeremy7644 19 septembre 2018 à 8:32:14
Marrant, il a explicitement demandé de pas avoir la réponse ^^'
Merci d'avoir répondu à ma place , je ne sais quoi dire
Générer des boucles imbriquées
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
« Je n’ai pas besoin de preuve. Les lois de la nature, contrairement aux lois de la grammaire, ne permettent aucune exception. »
D. Mendeleïev