如何确定参数是否为数字列表?(python)

如何确定参数是否为数字列表?(python),python,parameters,Python,Parameters,我一直在努力,一切都很好,但我想确保用户输入正确的输入 我需要语句检查输入的值是否是正好包含两个数字的列表,让它是整数或浮点数。欢迎提供更多信息 如果有人需要密码,给你。(可能在某个地方只有一个公式,而这里的公式效率很低。^) #基于起点、终点和% def查找点(t、A、B): ''' findPoint('的浮点成员', '点A的坐标写为[x,y]', '点B的坐标写为[x,y]') ''' x=(B[0]-A[0])*t+A[0] y=(B[1]-A[1])*t+A[1] 返回[x,y] #

我一直在努力,一切都很好,但我想确保用户输入正确的输入

我需要语句检查输入的值是否是正好包含两个数字的列表,让它是整数或浮点数。欢迎提供更多信息

如果有人需要密码,给你。(可能在某个地方只有一个公式,而这里的公式效率很低。^)

#基于起点、终点和%
def查找点(t、A、B):
'''
findPoint('的浮点成员',
'点A的坐标写为[x,y]',
'点B的坐标写为[x,y]')
'''
x=(B[0]-A[0])*t+A[0]
y=(B[1]-A[1])*t+A[1]
返回[x,y]
#查找bezier曲线上点的坐标
def贝塞尔曲线(t,*点):
点列表=[]
对于X英寸点:
pointList.append(X)
而len(pointList)=1:
圣殿骑士=[]
对于X范围内的i(0,len(点列表)-1):
append(findPoint(t,pointList[i],pointList[i+1]))
点列表=模板列表
返回pointList.pop()

您可以使用
all

>>> l = [1,2,3]
>>> a = ['a','b','c']
>>> all(isinstance(i, int) for i in l)
True
>>> all(isinstance(i, int) for i in a)
False
您还可以检查
len(list)==2

所以作为一个函数,它可以是

def twoNumValues(myList):
    return len(myList) == 2 and all(isinstance(i, int) or isinstance(i, float) for i in myList)


这是一个单行函数,用于测试您描述的参数:

def check(l):
    return len(l) == 2 and all(type(i) in (int, float) for i in l)

首先检查长度是否正好为2,然后检查两者(全部)是否都是int或float。

因此基本上,我在上面加上'and len(l)==3'?另外,这还不包括用户输入float的可能性,这是可以接受的。请参阅我最近的编辑。如果愿意,可以修改列表理解以允许
int
float
。将检查用户输入的有效值与使用此类函数分开。用户输入将被检查和强制(视情况而定),但不向bezierCurve传递数字是一个编程错误,它违反了API合同,所有理智的赌注都被取消。使用动态类型语言(如Python)在使用情况站点中包含此类检查通常是不合适的/建议的。@user2864740既然您提到了它,我可能会同意。我对这方面还很陌生,我真的不喜欢屏幕上突然出现巨大的错误,所以我最好收到一条小消息,告诉我我做了错事。虽然我说一般不推荐这样做,但当JavaScript库抛出“无法读取未定义的属性‘长度’”而不是“提供一个数组,虚拟”消息时,我会感到不安
def twoNumValues(myList):
    return len(myList) == 2 and all(type(i) in [float, int] for i in myList)
def check(l):
    return len(l) == 2 and all(type(i) in (int, float) for i in l)