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]
说明
- 使用
random
模块的 randint()
功能随机 select 列表中 0 到 length-1
之间的一个数字
- 使用这个数字作为索引,用新的布尔值替换列表中的随机元素
更新
你的代码似乎保证 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}
说明
- 将您的元素初始化为
dict
,值为布尔值,而不是列表
- 使用
random
模块的random.choice()
函数从dict
随机select一个密钥
- 使用此键将
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]
。希望这对您有所帮助!
我想知道是否可以创建一个像引用的那样的代码。
我的意思是,如果可以用布尔值 (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]
说明
- 使用
random
模块的randint()
功能随机 select 列表中 0 到length-1
之间的一个数字 - 使用这个数字作为索引,用新的布尔值替换列表中的随机元素
更新
你的代码似乎保证 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}
说明
- 将您的元素初始化为
dict
,值为布尔值,而不是列表 - 使用
random
模块的random.choice()
函数从dict
随机select一个密钥
- 使用此键将
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]
。希望这对您有所帮助!