Python 这是否正确使用';在';在条件语句中?

Python 这是否正确使用';在';在条件语句中?,python,Python,这是我正在处理的问题的一个过于简化的版本。这是粗糙的和基本的,但我刚开始使用python,我想确保我已经理顺了我的基本知识。 我似乎不能用这个得到想要的输出。例如:当a()生成的列表包含“2”时,当我调用b()时,它不会给我所需的y值,在本例中,y值应该是2 from random import choice, sample def a(): a = sample(range(0,5),2) a.append(1) return a def b(): if

这是我正在处理的问题的一个过于简化的版本。这是粗糙的和基本的,但我刚开始使用python,我想确保我已经理顺了我的基本知识。 我似乎不能用这个得到想要的输出。例如:当a()生成的列表包含“2”时,当我调用b()时,它不会给我所需的y值,在本例中,y值应该是2

from random import choice, sample

def a():
    a = sample(range(0,5),2)
    a.append(1)
    return a 

def b():
    if 3 in a():
        y = 1
    elif 2 in a():
        y = 2
    else:
        pass
    return y

print a()
print b()

您的程序有一些问题,最明显的是,您正在
b
中调用
a
,我认为您不想这样做。在
b
中,您将重新生成一个新随机值列表,然后检查该列表的内容

另外,您不应该在
else
语句中使用
pass
,因为您可以想象
y
从未定义过的可能性,因此您将无法返回某些内容。我建议如下:

from random import choice, sample

def a():
    a = sample(range(0,5),2)
    a.append(1)
    return a 

def b(a):
    if 3 in a:
        return 1
    elif 2 in a:
        return 2
    else:
        return

a_output = a()
print a_output
print b(a_output)

然而,这是一种检查列表内容的奇怪方式。在不知道程序用途的情况下,很难推荐编写更具Python功能的替代方法。

能否请您对问题进行编辑,并描述所需的输出是什么?您可以在
b()
中测试3和2是否属于两个不同的示例,这真的是您的意思吗?我想要b()函数,如果a()中的列表包含3,则为“1”;如果列表包含2,则为“2”。我希望它在同一个列表中运行。然后不要调用
a()
两次。执行
my_sample=a()
,然后
如果my_sample中有3个:。。。我的样本中的elif 2:@Thierrylahuille,啊,非常感谢你。