我在Python中创建了一个函数,它返回了投掷2个骰子的所有可能结果的列表。 元组列表:[(1,1),(1,2),...,(6,6)]。
然后我编写了一个函数来查找所有元素,其中两个值的总和甚至是(a),另一个函数用于查找值的乘积甚至(b)中即可。
现在我正在尝试编写一个函数来查找仅在(a)中的元素和另一个函数来查找值的乘积在哪两个(a)和(b)。
def dice_outcomes(): outcomes=[] for i in range (1,7): for j in range (1,7): outcomes.append((i,j)) r = outcomes return(r) def filter_sumiseven(tuple): elem1 = tuple[0] elem2 = tuple[1] return (elem1 + elem2)%2 == 0 def filter_productiseven(tuple): elem1 = tuple[0] elem2 = tuple[1] return (elem1 * elem2)%2 == 0
我尝试将我的列表(见下文)转换为一组,但它仍然不起作用。 我首先尝试使用变量a和b来返回我的第2和第3个函数,但这不起作用。 任何人都可以解释如何获得正确的输出?
def only_as(a): set_a = set(a) set_b = set(b) if set_a not in set_b: return set_a else: #DO NOT ADD def a_and_b(a, b): set_a = set(a) set_b = set(b) if set_a in set_b: #print if set_b in set_a : #print
非常感谢你的帮助!
答案 0 :(得分:1)
您可以将代码简化为:
from itertools import product
dice_outcomes = list(product(range(1, 7), repeat=2))
is_even = {el for el in dice_outcomes if sum(el) % 2 == 0}
product_is_even = {(fst, snd) for fst, snd in dice_outcomes if fst*snd % 2 == 0}
just_even = is_even - product_is_even
even_and_product = is_even & product_is_even