Python:从数组中随机选择一个布尔值并更改其值

2024-10-06 11:29:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有可能创建一个类似引用的代码

我的意思是,如果有可能创建一个带有布尔值(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新手)


Tags: the代码anfalsetrueifwithmadam
2条回答

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

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]。希望这有帮助

要使用布尔值(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()函数从列表中随机选择一个介于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中随机选择一个a键
  3. 使用此键将dict中的随机布尔值替换为新的布尔值

相关问题 更多 >