如何从列表中随机选择变量,然后在python中修改它?

时间:2015-08-29 16:28:29

标签: python list python-3.x random

这是我的python 3代码。我想随机选择一个单元格变量(c1到c9)并将其值更改为与cpuletter变量相同。

import random

#Cell variables
c1 = "1"
c2 = "2"
c3 = "3"
c4 = "4"
c5 = "5"
c6 = "6"
c7 = "7"
c8 = "8"
c9 = "9"
cells = [c1, c2, c3, c4, c5, c6, c7, c8, c9]

cpuletter = "X"

random.choice(cells) = cpuletter

我在“random.choice(cells)”上收到“无法分配给函数调用”错误。我假设我只是错误地使用它?我知道您可以使用随机选择来更改变量,如下所示:

import random
options = ["option1", "option2"]
choice = random.choice(options)

2 个答案:

答案 0 :(得分:7)

问题:

random.choice(cells)会从您的列表中返回一个随机值,例如"3",并且您正在尝试为其分配内容,例如:

"3" = "X"

这是错误的。

除此之外,您可以修改list,例如:

cells[5] = "X"

解决方案:

您可以使用random.randrange()

import random
cells = [str(i) for i in range(1,10)] # your list
cpuletter = 'X'

print(cells)
random_index = random.randrange(len(cells)) # returns an integer between [0,9]
cells[random_index] = cpuletter
print(cells)

<强>输出:

['1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '2', '3', '4', '5', '6', '7', 'X', '9']

答案 1 :(得分:-1)

Random.choice(cells)cells返回一个随机元素,因此如果它返回元素#0而元素#0是值"1",那么您的原始语句将会本质上是说"1" = "X" - 显然你不能将字符串文字指定为别的东西,它不是变量。

您想要获得随机元素#,并指定cells[rand_elt_num]。 您可以通过以下内容获取随机元素编号:

rand_elt_num = random.randint(0, len(cells)-1 )  #get index to a random element
cells[rand_elt_num] = "X"    # assign that random element

我认为这与其他答案所说的相同,只是使用random.randrange()代替。