2012-03-29 2 views
0

У меня есть 10 кубиков, которые все запрограммированы так же, как D1.Как установить значение внутри списка в python?

D1 = random.randint(1,12) 

Я затем хранить их в список, как это:

roller[DI,D2...] 

Человек затем выбирает кубик, чтобы держать (в цикле в то время), и когда он хочет, чтобы бросить оставшиеся кости он заканчивается петля. Программа ниже успешно завершает цикл, однако кости в списке не меняются. Что мне не хватает?

while wanted != "11": 
     print("The dice left in your roll:" , roller) 
     want = int(input("Select Di by using numbers 0-9.")) 
     di = roller[want] 
     del roller [want] 
     keep.append(di) 
     print("Dice that you have kept:" , keep) 
     wanted = input("\nType 11 to roll again. Type anything else to select more dice.\n") 
     wanted = "12" 
     D1 = random.randint(1,12) 
     [... more setting ...] 
     D10 = random.randint(1,12) 

Однако, после установки Кубиков D1 через D10, следующая итерация моего время цикла не отражает изменение значения для списка ролика. Почему это?

ответ

3

Изменение D1 не изменит штамп в списке. Вы должны изменить значение в самом списке.

>>> import random 
>>> dices = [random.randint(1,12) for i in range(0,10)] 
>>> dices 
[5, 2, 1, 6, 4, 8, 4, 10, 1, 10] 
>>> dices[1] = random.randint(1,12) 
>>> dices 
[5, 5, 1, 6, 4, 8, 4, 10, 1, 10] 

Примечание над чем второй костью (индекс 1) изменило значение в dices списке.

Т.е., вместо Dn = random.randint(1,12) где п ваши кости, вы хотите сделать dices[n] = random.randint(1,12)

В целом, вы неправильно оператор присваивания в питоне.

>>> f = 123 

устанавливает 'F', чтобы указать на значение '123'.

Если положить п в список, как это:

>>> my_list = [f, 1, 2, 3] 

То, что вы делаете, говоря: «создать список, названный„my_list“, который имеет ссылку на значение 123, 1, 2 и 3 в нем.

Когда вы переназначить «F», ссылка в списке не меняется.

>>> f = 456 
>>> my_list 
[123, 1, 2, 3] 

То, что вы говорите, «в настоящее время F указывает на значение 456». Это не имеет значения того, что было поместите в свой список.

[в сторону]: Интересно, что, хотя это и относится к Python, это не относится ко всем языкам.

+0

Спасибо. Это очень помогает. Удалил числа из кубиков и все еще повторил с помощью num = len (dices) dices = [random.randint (1,12) для i в диапазоне (0, num)] –

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