这是一个关于写作方便(/懒惰)的问题。我知道我会花更多的时间来写这个问题,而不是我会节省多少,但我很好奇。编辑:我知道这可能不可能实现我想要的功能,但我很好奇,想知道是否有更了解Python的人知道一种方法。我还编辑了代码块,以澄清注解中出现的一些情况。
假设我有3种可能发生的情况,我的程序应该随机选择一种,现在我将添加第4种可能发生的情况,但是我不想增加random.randint(a,b)
中的b
,也不想增加elif Case == i:
中的i
现在我有这个:
x_1 = 0
x_2 = 0
Case = random.randint(1, 3)
if Case == 1: ## a, b, and d are known
mylist = [1, 1, 0, 1, 0, 0]
x_1 += 1
elif Case == 2: ## a, b, and f are known
mylist = [1, 1, 0, 0, 0, 1]
x_2 += 1
elif Case == 3: ## a, c, and d are known
mylist = [1, 0, 1, 1, 0, 0]
x_1 += 2
x_2 += x_1
然后,如果我想添加第四个case,我复制粘贴一个,并且只编辑case的主体。但是,我还需要更改第一行中的3
,以及我刚刚粘贴的行中的3
。而且,重要的部分,如果我想在case 1和case 2之间添加一个选项以提高可读性,这意味着我必须在新的案例2之后更新所有的整数--这是我不想做的事情。
有没有一种方法可以让Python随机选择一个elif?显然它们不一定是elif,我也试着查看了switch case,但是没有找到我想要的,就像这样:
ChooseRandomOption
option ## a, b, and d are known
mylist = [1, 1, 0, 1, 0, 0]
x_1 += 1
option ## a, b, and f are known
mylist = [1, 1, 0, 0, 0, 1]
x_2 += 1
option ## a, c, and d are known
mylist = [1, 0, 1, 1, 0, 0]
x_1 += 2
x_2 += x_1
然后我要做的就是添加这个而不改变其他任何东西:
option ## a, b, and e are known
mylist = [1, 1, 0, 0, 1, 0]
x_1 -= 1
谢谢!
附言
1.请记住,目的是写得更少,所以添加函数和挑选随机函数并不是我真正想要的。特别是因为每个函数的输入可能不同。
1.(编辑:这个PS现在已经集成到代码块中了)这个列表仅仅是可以完成的一个例子,但是也许在option
内部必须执行多个操作,所以mylist = random.choice([[1, 1, 0, 1, 0, 0], [1, 1, 0, 0, 0, 1], [1, 0, 1, 1, 0, 0]])
在这里可能可以工作,但是在其他情况下不行。我还想在每个情况下添加一个注解来澄清它是什么情况。
2条答案
按热度按时间mum43rcc1#
你可以有一个函数列表,然后执行一个随机的,这样你甚至可以有随机的行为,而不仅仅是列表,并且为了清晰起见,你也可以给它们命名。
如果您真的不想更新myFuncs列表,您可以执行类似这样的操作,在函数名前面加上一个标识符
kmbjn2e32#
使用dict存储案例允许您通过从字典的键中随机选择来从dict中随机选取条目。您可以轻松地随意添加或删除更多条目。