Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中迭代条件检查?_Python_Python 2.7_Loops_Iteration - Fatal编程技术网

如何在python中迭代条件检查?

如何在python中迭代条件检查?,python,python-2.7,loops,iteration,Python,Python 2.7,Loops,Iteration,以下函数为我提供了正确的结果。但是对于大量的q,处理这个程序非常困难。所以,我想通过循环或其他方式来迭代q。我该怎么做 def sgf(a): # here a is a list of two numbers import random a2=random.randint(1,1068) p=1069 q1=(a[0]+a[1]*1+a2*1**2)%p q2=(a[0]+a[1]*2+a2*2**2)%p q3=(a[0]+a[1]*3+a2*

以下函数为我提供了正确的结果。但是对于大量的q,处理这个程序非常困难。所以,我想通过循环或其他方式来迭代q。我该怎么做

def sgf(a): # here a is a list of two numbers
    import random
    a2=random.randint(1,1068)
    p=1069
    q1=(a[0]+a[1]*1+a2*1**2)%p
    q2=(a[0]+a[1]*2+a2*2**2)%p
    q3=(a[0]+a[1]*3+a2*3**2)%p
    q4=(a[0]+a[1]*4+a2*4**2)%p
    q5=(a[0]+a[1]*5+a2*5**2)%p
    q6=(a[0]+a[1]*6+a2*6**2)%p
    q7=(a[0]+a[1]*7+a2*7**2)%p
    q8=(a[0]+a[1]*8+a2*8**2)%p
    q9=(a[0]+a[1]*9+a2*9**2)%p
    while ((q1>1060) or (q2>1060) or (q3>1060) or (q4>1060) or (q5>1060) or (q6>1060) or (q7>1060) or (q8>1060) or (q9>1060)):
        a2=random.randint(1,1068)
        q1=(a[0]+a[1]*1+a2*1**2)%p
        q2=(a[0]+a[1]*2+a2*2**2)%p
        q3=(a[0]+a[1]*3+a2*3**2)%p
        q4=(a[0]+a[1]*4+a2*4**2)%p
        q5=(a[0]+a[1]*5+a2*5**2)%p
        q6=(a[0]+a[1]*6+a2*6**2)%p
        q7=(a[0]+a[1]*7+a2*7**2)%p
        q8=(a[0]+a[1]*8+a2*8**2)%p
        q9=(a[0]+a[1]*9+a2*9**2)%p
        if ((q1<=1060) and (q2<=1060) and (q3<=1060) and (q4<=1060) and (q5<=1060) and (q6<=1060) and (q7<=1060) and (q8<=1060) and (q9<=1060)):
            break  
    return q1,q2,q3,q4,q5,q6,q7,q8,q9
其中a0、a1在[01060]中,a2从[01068]中随机选择 如果所有的fx你的q应该是一个列表。这样,您就可以使用具有范围的for循环来执行计算:

for ind in range(len(q)):
    q[ind]=(a[0]+a[1]*(ind + 1)+a2*(ind + 1)**2)%p
您也可以将您的条件表示为迭代,但最简单的方法可能是使用any函数并将您的条件编写为生成器:

while any(qx > 1060 for qx in q):
你的q应该是一个列表。这样,您就可以使用具有范围的for循环来执行计算:

for ind in range(len(q)):
    q[ind]=(a[0]+a[1]*(ind + 1)+a2*(ind + 1)**2)%p
您也可以将您的条件表示为迭代,但最简单的方法可能是使用any函数并将您的条件编写为生成器:

while any(qx > 1060 for qx in q):

看起来在生成qs时,唯一的变量是将a[1]和a2乘以的整数

您可以修改函数以接受q的总数作为第二个参数,例如total_q,然后迭代range1、total_q+1,并将每个新q附加到Python列表中,最后返回列表

尝试以下方法:

def sgf(a, total_q):
    import random
    a2=random.randint(1,1068)
    p=1069
    q_list = []
    for i in range(0,total_q+1):
        q = (a[0]+a[1]*i+a2*i**2)%p
        q_list.append(q)
    while any(q > 1060 for q in q_list):
        a2=random.randint(1,1068)
        q_list = []
        for i in range(0,total_q+1):
            q =(a[0]+a[1]*i+a2*i**2)%p
            q_list.append(q)

        if all(q <= 1060 for q in q_list):
            break 
    return q_list

看起来在生成qs时,唯一的变量是将a[1]和a2乘以的整数

您可以修改函数以接受q的总数作为第二个参数,例如total_q,然后迭代range1、total_q+1,并将每个新q附加到Python列表中,最后返回列表

尝试以下方法:

def sgf(a, total_q):
    import random
    a2=random.randint(1,1068)
    p=1069
    q_list = []
    for i in range(0,total_q+1):
        q = (a[0]+a[1]*i+a2*i**2)%p
        q_list.append(q)
    while any(q > 1060 for q in q_list):
        a2=random.randint(1,1068)
        q_list = []
        for i in range(0,total_q+1):
            q =(a[0]+a[1]*i+a2*i**2)%p
            q_list.append(q)

        if all(q <= 1060 for q in q_list):
            break 
    return q_list

你应该学习如何使用列表和循环。。。事实上,对于这个特殊的问题,您应该使用NumPy。尝试一些类似于anya[0]+a[1]*1+a2*i**2%p>1060 for i In range1,10的方法,您应该学习如何使用列表和循环。。。事实上,对于这个特殊的问题,您应该使用NumPy