如何确保参数是一个数字列表?(python)



我一直在研究bsamizier曲线,我让一切都工作得很好,但我想确保用户将输入正确的输入。

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

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

#finding a point on vector based on start point, end and %
def findPoint(t, A, B):
    '''
    findPoint( 'float member of <0, 1>',
               'coordinates of point A written as [x, y]',
               'coordinates of point B written as [x, y]')
    '''
    x=(B[0]-A[0])*t+A[0]
    y=(B[1]-A[1])*t+A[1]
    return [x, y]
#find coordinates of a point on the bezier curve
def bezierCurve(t, *points):
    pointList=[]
    for X in points:
        pointList.append(X)
    while len(pointList) !=1:
        tempList=[]
        for i in xrange(0, len(pointList)-1):
            tempList.append(findPoint(t, pointList[i], pointList[i+1]))
        pointList=tempList
return pointList.pop()

您可以使用all

检查所有元素是否为int(或float)
>>> 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 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)

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

最新更新