2016-08-26 1 views
1

Je souhaite imprimer une valeur aléatoire à partir d'une clé sélectionnée. A l'intérieur du code sont des commentaires qui expliquent le code.Imprimer une valeur aléatoire à partir de la clé sélectionnée dans python

cases = { 
'wildfire' : { 
    'blue' : ['1', '2', '3', '4', '5'], 
    'purple' : ['6', '7', '8', '9', '10'], 
    'pink' : ['11', '12', '13', '14', '15'], 
    'red' : ['16', '17', '18', '19', '20'], 
    'knives' : ['k', 'b', 'f'] 
    }, 
'phoenix' : { 
    'blue' : ['1', '2', '3', '4', '5'], 
    'purple' : ['6', '7', '8', '9', '10'], 
    'pink' : ['11', '12', '13', '14', '15'], 
    'red' : ['16', '17', '18', '19', '20'], 
    'knives' : ['k', 'b', 'f'] 
    }, 
'gamma' : { 
    'blue' : ['1', '2', '3', '4', '5'], 
    'purple' : ['6', '7', '8', '9', '10'], 
    'pink' : ['11', '12', '13', '14', '15'], 
    'red' : ['16', '17', '18', '19', '20'], 
    'knives' : ['k', 'b', 'f'] 
    }, 
'chroma' : { 
    'blue' : ['1', '2', '3', '4', '5'], 
    'purple' : ['6', '7', '8', '9', '10'], 
    'pink' : ['11', '12', '13', '14', '15'], 
    'red' : ['16', '17', '18', '19', '20'], 
    'knives' : ['k', 'b', 'f'] 
    }, 
} 
#First keys in dictionary are cases which can be selected by user 
#The keys in cases dictionary are scaled from common to uncommon (top to    bottom) 
#Values in the cases dictionary are the skins. 
case_keys = 10 
#case_keys are used to open cases 
while case_keys >0: 
resp=raw_input("Which case would you like to open? ") 
for i in cases: 
    if resp == i: 
     chance = random.randint(1, 100) 
     """HELP HERE. The skins are classed by rarity. E.g blue is common 
but purple is more rare than blue and so forth. E.g blue is assigned to 25, 
purple to 17, pink to 10, red to 5, knives to 1. E.g 45(chance) >= x, output:blue is chosen, and from its list a random skin is selected.""" 

sortie devrait être par exemple: 8

J'utilise Python 2.6. Malheureusement, je ne peux pas mettre à jour quoi que ce soit.

+0

Pourriez-vous s'il vous plaît expliquer un peu plus sur ce que vous essayez accomplir? Que voulez-vous dire la sortie devrait être 8, lorsque vous avez une déclaration formatée en cours d'impression? Est-ce que vous essayez de produire "Vous avez gagné une peau de phénix ..." ou "Vous avez gagné une peau de 8 ..." ou quelque chose d'autre entièrement? – lanery

+0

L'utilisateur saisit un nom de dossier, puis une autre entrée est invitée. "Entrez 'oui' pour ouvrir". Ce qui exécute le reste du script comme indiqué. Sortie: "Vous avez gagné un 8 peau" qui est aléatoire. –

Répondre

0

peut-être aller sur un membre, mais peut-être cela aidera

import random 

cases = { 
    'wildfire' : ['1', '2', '3', '4', '5'], 
    'phoenix' : ['6', '7', '8', '9', '10'], 
    'gamma' : ['11', '12', '13', '14', '15'], 
    'chroma' : ['16', '17', '18', '19', '20'], 
    } 


user_input = random.choice(cases.keys()) 
# user_input = one of 'wildfire', 'phoenix', 'gamma', or 'chroma' 
index = random.randint(0, len(cases[user_input])) 
# index = random integer between 0 and 4 used to index cases 

chance = random.randint(1, 100) 

for i, n in enumerate([35, 17, 5, 2]): 
    if chance >= n: 
     print "You've won a %s skin." % cases[user_input][index] + \ 
       " With a chance of, %s" % chance 
     break 

sorties exemples d'exécuter cet extrait:

You've won a 15 skin. With a chance of, 84 
You've won a 8 skin. With a chance of, 88 
You've won a 20 skin. With a chance of, 76 
+0

S'il vous plaît voir la nouvelle édition. La réponse est correcte mais j'ai ajusté le dictionnaire qui nécessite plus de code. –