python - 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 新手)
解决方案
要使用布尔值 (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]
解释
- 使用模块的
randint()
功能random
随机选择一个介于 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}
解释
- 将您的元素初始化为 a
dict
,其值为布尔值,而不是列表 - 使用模块的
random.choice()
功能random
随机选择一个keydict
- 使用此键将您的随机布尔值替换
dict
为新的布尔值
推荐阅读
- python - 为什么 scipy.optimize.curce 拟合函数不能正确拟合数据点,为什么要给出较大的 pfit 值?
- facebook - 在 Xamarin 中使用 AWS Cognito 成功进行 Facebook 身份验证后无法检索用户数据
- python - 通过 Flask-SQL Alchemy 创建关联对象在 shell 中按预期工作,但在 Flask 路由中产生 JSON 错误
- java - 竞争条件:整数的最小值和最大值范围
- android - 如何将 Activity 转换为 Fragment?
- elasticsearch - 如何搜索多个 geo_distance 查询
- python - Python 深度学习:不规则多维数据集的形状
- xcode - 为 Intellij Idea (Java) 和 Xcode (Swift) 匹配 LIGHT 主题
- c# - 在上传的文件中包含说明
- apache-spark - 使用 Apache Spark 进行更改数据捕获