这是我的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)
答案 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()
代替。