首页 > 解决方案 > 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:我想我不太了解如何使用它,我应该怎么做才能让我的代码了解女士已变为 True 并进入 if 语句

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

标签: pythonarraysrandomboolean

解决方案


要使用布尔值 (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. 使用模块的randint()功能random随机选择一个介于 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. 将您的元素初始化为 a dict,其值为布尔值,而不是列表
  2. 使用模块的random.choice()功能random随机选择一个keydict
  3. 使用此键将您的随机布尔值替换dict为新的布尔值

推荐阅读