Donc, j'écris un programme qui, une fois terminé, aura un utilisateur lancer 2 dés et ensuite garder une somme courante des valeurs affichées et assigner quelques points aux valeurs qui sont roulés, mais je suis confronté à un problème au démarrage. C'est ce que j'ai jusqu'à présent:Affectation d'un nom de variable à une fonction en Python 3
def diceOne():
import random
a = 1
b = 6
diceOne = (random.randint(a, b))
def diceTwo():
import random
a = 1
b = 6
diceTwo = (random.randint(a, b))
def greeting():
option = input('Enter Y if you would like to roll the dice: ')
if option == 'Y':
diceOne()
diceTwo()
print('you have rolled a: ' , diceOne, 'and a' , diceTwo)
greeting()
(après, je prévois de faire des calculs comme diceTwo + diceOne
et faire toutes les autres choses - je sais que cela est très difficile)
Mais quand il court, il ne donne pas de bonnes valeurs entières comme attendu, il retourne function diceOne at 0x105605730> and a <function diceTwo at 0x100562e18>
Est-ce que quelqu'un sait comment contourner cela tout en étant capable d'assigner des noms de variables pour pouvoir ensuite effectuer des calculs?
La création de variables avec le même nom qu'une fonction est une mauvaise pratique de programmation. – eyllanesc
Parce que vous référencez les fonctions, pas les valeurs qu'elles ont renvoyées (que vous avez complètement ignorées). Aussi vos deux fonctions sont identiques, donc * pourquoi avez-vous deux fonctions? * Vous devriez avoir quelque chose de plus comme "rollOne = dice()" et "rollTwo = dice()". – jonrsharpe
Les variables n'existent que dans le contexte où elles sont créées, dans le cas où les variables n'existent que dans la fonction, donc si vous imprimez diceOne depuis l'extérieur de la fonction, cela sera considéré comme une fonction. Votre code me semble ridiculement idiot. – eyllanesc