Python :从数组中随机选择一个布尔值并改变它的值

Python : Randomly choose a boolean from an array and change its value

我想知道是否可以创建一个像引用的那样的代码。

我的意思是,如果可以用布尔值 (False) 创建一个数组,只选择一个(随机)并更改它的值(为 True),然后就可以使用它了?

第一次随机选择只能在程序启动时进行一次。

Gentleman = False
Daughter = False
Madam = False

character_list = [Gentleman, Daughter, Madam] # an array with the bools above

for character in characters_list:
    character = random.choice(characters_list) # Randomly pick a character from the list
    character = True # Set the character as True

    if Madam == True:
        ...
        Madam = False
        Daughter = True
        ...

    if Gentleman == True:
        ...
        Gentleman = False
        Madam = True
        ...

    if Daughter == True:
        ...
        Daughter = False
        Gentleman = True
        ...

PS:我知道我的代码是错误的,但这只是为了说明我想做什么

感谢您的帮助

更新

所以在尝试了评论中写的内容后,我发现自己遇到了问题

Gentleman = False
Daughter = False
Madam = False

character_list = [Gentleman, Daughter, Madam] # an array with the bools above
print(characters_list)
characters_list[random.randint(0, len(characters_list)-1)] = True
print(characters_list)

print("Starting up ...")

if Madam == True:
    print("Hello Madam")
    ...
    Madam = False
    Daughter = True
    ...

输出

[False, False, False]

[False, False, True]

Starting up ...

由于我没有进入if Madam == True:我想我不太明白如何使用它,我应该怎么做才能让我的代码理解Madam已经变成True并进入if 语句

(顺便说一句,我是 Python 的新手)

要使用布尔值 (False) 创建数组并随机更改其中一个值(为 True),请尝试:

代码:

import random

my_list = [False]*5
print(my_list)
my_list[random.randint(0,len(my_list)-1)] = True
print(my_list)

输入

[False, False, False, False, False]

输出

[False, True, False, False, False]

说明

  1. 使用 random 模块的 randint() 功能随机 select 列表中 0 到 length-1 之间的一个数字
  2. 使用这个数字作为索引,用新的布尔值替换列表中的随机元素

更新

你的代码似乎保证 python dict 所以尝试将上面的逻辑修改为:

代码:

import random

my_dict = {'Gentleman': False, 'Daughter': False, 'Madam': False}
print(my_dict)
my_dict[random.choice(list(my_dict.keys()))] = True
print(my_dict)

if my_dict['Madam'] == True:
    print("Hello Madam")
    my_dict['Madam'] = False
    my_dict['Daughter'] = True

print(my_dict)

输入:

{'Gentleman': False, 'Daughter': False, 'Madam': False}

输出:

# initial values
{'Gentleman': False, 'Daughter': False, 'Madam': False}

# after random value is set to True
{'Gentleman': False, 'Daughter': False, 'Madam': True}

#inside the if condition
Hello Madam
{'Gentleman': False, 'Daughter': True, 'Madam': False}

说明

  1. 将您的元素初始化为 dict,值为布尔值,而不是列表
  2. 使用random模块的random.choice()函数从dict
  3. 随机select一个密钥
  4. 使用此键将 dict 中的随机布尔值替换为新的布尔值

并不太复杂。本质上,您要做的是在列表中选择一个随机索引,然后更改该项目。例如,

import random

bool_list = [False, False, False]

list_length = len(bool_list)

index = random.randint(list_length)

bool_list[index] = True

或者,包装成一个函数:

def set_random_true(list_):
    list_len = len(list_)
    index = random.randint(index)
    list_[index] = True

那么,你可以这样使用它:

import random

def set_random_true(list_):
    --snip--

my_list = [False, False, False]
set_random_true(my_list)

print(my_list)

这将打印 [True, False, False][False, True, False][False, False, True]。希望这对您有所帮助!