Lambda函数中嵌入for循环的语法错误

2024-04-25 22:47:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我确信这是一个简单的修复,但是我在第11行得到了一个语法错误,它是下面lambda函数中嵌入的for循环(对于范围中的j)。你知道吗

import math
import random

def lambda_handler(event, context):
    shots = int(event['pi_shots'])
    rate = int(event['report_rate'])
    pi_values=[]
    incircle_sum = 0
    for i in range(0, rate):
        incircle = 0
        for j in range(0,shots/rate):
            random1 = random.uniform(-1.0,1.0)
            random2 = random.uniform(-1.0,1.0)
            if( ( random1*random1 + random2*random2 ) < 1 ):
                incircle += 1
        incircle_sum += incircle
        pi = 4*(float(incircle_sum)/((shots/rate)*(i+1)))
        pi_values.append(pi)
    return pi_values

Tags: lambdainimporteventforratepirandom
2条回答

您使用的是range内置的,错误的。内置range的第二个参数必须是integer。 必须将shots/rate转换为integer。试试这个:

import math
import random


def lambda_handler(event, context):
    shots = int(event['pi_shots'])
    rate = int(event['report_rate'])
    pi_values = []
    incircle_sum = 0
    for i in range(0, rate):
        incircle = 0
        for j in range(0, int(shots / rate)):
            random1 = random.uniform(-1.0, 1.0)
            random2 = random.uniform(-1.0, 1.0)
            if ((random1 * random1 + random2 * random2) < 1):
                incircle += 1
        incircle_sum += incircle
        pi = 4 * (float(incircle_sum) / ((shots / rate) * (i + 1)))
        pi_values.append(pi)
    return pi_values

正如您所说,错误来自于range(start, stop)的停止值。^{}的参数应该是整数。因此,将除法结果转换为int

for j in range(0, int(shots/rate)):

相关问题 更多 >

    热门问题