gpt4 book ai didi

python - 尝试传递 Python 的 C 代码,总线出现错误 IndexError : list assignment index out of range

转载 作者:行者123 更新时间:2023-11-30 16:22:48 26 4
gpt4 key购买 nike

我有一个 C 代码,我试图将它传递给 python,我遇到了很多问题,我已经研究了热点,但到目前为止没有成功。我将发布 C 代码以及我在 Python 中所做的事情,请帮助我

C 代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define Tam 3

int main (){

int R[Tam + 2];
int G[Tam + 2];
int B[Tam + 2];

float Rf[Tam];
float Gf[Tam];
float Bf[Tam];

float dist[Tam];

int i;
float soma = 0;

R[0] = 0;
R[Tam + 1] = 0;
G[0] = 0;
G[Tam + 1] = 0;
B[0] = 0;
B[Tam + 1] = 0;

printf("insira os valores RGB no formato R,G,B\n");

for (i = 1; i <= Tam; i++){
scanf ("%d,%d,%d", &R[i], &G[i], &B[i]);}

for (i = 1; i <= Tam; i++){

Rf[i - 1] = (R[i-1] + R[i] + R[i+1])/3;
Gf[i - 1] = (G[i-1] + G[i] + G[i+1])/3;
Bf[i - 1] = (B[i-1] + B[i] + B[i+1])/3;
}

for (i = 0; i < Tam; i++){
dist[i] = sqrt(pow(R[i + 1] - Rf[i], 2) + pow(G[i + 1] - Gf[i], 2) + p
pow(B[i + 1] - Bf[i], 2));
}

for (i = 0; i < Tam; i++){
soma = soma + dist[i];
}

soma = soma / Tam;

printf("media da distancia euclidiana = %.1f", soma);


return 0;
}

这里是 Python 代码:

from math import sqrt

Tam = 3
soma = 0

R = [Tam + 2]
G = [Tam + 2]
B = [Tam + 2]

Rf = [3]
Gf = [Tam]
Bf = [Tam]

dist = [Tam]

R.insert(0, -1)
R.append(0)

G.insert(0, -1)
G.append(0)

B.insert(0, -1)
B.append(0)

# for i in range(0, -1):
# R[i] = 0
# G[i] = 0
# B[i] = 0



print("insira os valores RGB no formato R,G,B: \n")

for i in range(1, 2):
R.append(int(input()))
G.append(int(input()))
B.append(int(input()))

for i in range(1, Tam):
Rf[i-1] = (R[i-1] + R[i] + R[i+1])/3
Gf[i-1] = ((G[i-1] + G[i] + G[i+1])/3)
Bf[i-1] = ((B[i-1] + B[i] + B[i+1])/3)

for i in range(0, Tam):
dist.append(sqrt(pow(R[i+1] - Rf[i], 2) + pow(G[i+1] - Gf[i], 2)))

for i in range(0, Tam):
soma = soma.__add__(dist[i])

soma = soma/Tam

print('Média da distância euclidiana = ', soma)

并显示此错误:

File "exer1.py", line 40, in <module>                                                                                     
Rf[i] = (R[i] + R[i+1] + R[i+2])/3
IndexError: list assignment index out of range

我想了解我可以在 python 中进行匹配,因为我知道我使用了一些错误的语法

最佳答案

您可以尝试/排除任何检索索引的尝试:

for i in range(1, Tam):
try:
Rf[i-1] = (R[i-1] + R[i] + R[i+1])/3
Gf[i-1] = ((G[i-1] + G[i] + G[i+1])/3)
Bf[i-1] = ((B[i-1] + B[i] + B[i+1])/3)
except IndexError as ex: # this line may need to change, based on your python version
# printing will at least let you know the error happened, without blowing up
print(str(ex))
pass

关于python - 尝试传递 Python 的 C 代码,总线出现错误 IndexError : list assignment index out of range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54280956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com