2016-08-26 2 views
1

Я хочу напечатать случайное значение из выбранного ключа. Внутри кода есть комментарии, которые объясняют код.Печать случайного значения из выбранного ключа в 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.""" 

Выход должен быть например: 8

Я использую Python 2.6. К сожалению, я не могу обновиться.

+0

Не могли бы вы уточнить некоторые больше на то, что вы пытаетесь выполнить? Что вы имеете в виду, вывод должен быть 8, когда вы печатаете форматированный отчет? Вы пытаетесь вывести «Вы выиграли феникс-шкуру ...» или «Вы выиграли 8 скинов ...» или что-то еще? – lanery

+0

Пользователь вводит имя регистра, затем запрашивается другой ввод. «Введите« да », чтобы открыть». Который выполняет остальную часть скрипта, как показано. Результат: «Вы выиграли 8 скинов», который является случайным. –

ответ

0

Может идти на конечности здесь, но, возможно, это поможет

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 

Примеры выхода из выполнения этого фрагмента кода:

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

См. Новое редактирование. Ответ правильный, но я скорректировал словарь, который требует большего количества кода. –

Смежные вопросы