你好,我无法解决这个问题。我真的很愚蠢。
在此布尔值列表中,用户可以与之交互,并且此时仅允许他具有一个True。如果一个为True,则其他四个为False
scatter_is_01 = False
scatter_is_02 = False
scatter_is_03 = False
scatter_is_04 = False
scatter_is_05 = True
if scatter_is_01==True:
scatter_is_02 = False
scatter_is_03 = False
scatter_is_04 = False
scatter_is_05 = False
if scatter_is_02==True:
scatter_is_01 = False
scatter_is_03 = False
scatter_is_04 = False
scatter_is_05 = False
if scatter_is_03==True:
scatter_is_02 = False
scatter_is_01 = False
scatter_is_04 = False
scatter_is_05 = False
if scatter_is_04==True:
scatter_is_02 = False
scatter_is_03 = False
scatter_is_01 = False
scatter_is_05 = False
此解决方案很愚蠢,甚至无法正常工作。因为如果用户要再次将另一个值设置为true,则必须将其再次设置为false。
有人可以教我吗?
scatter_is_xx必须为布尔值,因为api仅使用布尔值创建切换按钮。
答案 0 :(得分:2)
您选择了一个尴尬的表示形式以供参考。如果标志一次可以恰好选择一项,则只需直接表示它:一个值在1-5范围内的变量。
scatter = 4
表达与您以前的信息完全相同
scatter_is_04 = True
scatter_is_02 = False
scatter_is_03 = False
scatter_is_01 = False
scatter_is_05 = False
要检查曾经是单个标志的内容,
if scatter_is_04:
现在是
if scatter == 4:
毕竟,看看您的变量名。您所写的名字很好地描述了您所需的信息。以更方便使用的方式编写它。
答案 1 :(得分:0)
我敢肯定,您可以通过多种方式解决此问题-但是枚举是一个相当优雅的解决方案;
from enum import Enum
class Scatter(Enum):
first = 1
second = 2
third = 3
forth = 4
fifth = 5
@property
def is_01(self):
return self is Scatter.first
@property
def is_02(self):
return self is Scatter.second
scatter = Scatter.first
print(scatter is Scatter.first) # True
print(scatter is Scatter.second) # False
print(scatter is Scatter.third) # False
print(scatter.is_01) # True
print(scatter.is_02) # False
答案 2 :(得分:0)
您可以使用一个简单的列表来存储值而不是变量:
scatter_is_01 = False
scatter_is_02 = False
scatter_is_03 = False
scatter_is_04 = False
scatter_is_05 = True
# use a list instead of seperate variables
# Storing all the scatter variables in a list
scatter = [scatter_is_01,scatter_is_02,scatter_is_03,scatter_is_04,scatter_is_05]
# you can also directly define the it as -
# scatter = [False,False,False,False,True]
def scatter_changer(index): # index starts from 0
for i in range(len(scatter)):
if( i == index ):
scatter[i] = True
else:
scatter[i] = False
scatter_changer(1) # this sets scatter_is_02 to true and all others false