Python问题,类型错误:“float对象不能解释为integer”。无法在“for”循环中返回函数的值

2024-06-24 13:42:24 发布

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

我需要创建函数g(n),它给出从1到n(包括1和n)的十进制数的总和。你知道吗

然后我必须创建一个3x5矩阵,其中行和列是g(I*j-2*I^pi)的函数,I和j是行和列的索引。这就是我目前所做的:

import numpy as np
import matplotlib.pyplot as plt

def g(n):
    return np.sum(range(1,n+1)) 

M = np.ones([3,5])

for i in range(3):
    for j in range(5):
        M[i,j] = g(i*j - 2*i**np.pi)  

主要问题是内核说“float”对象不能解释为整数。你知道吗

任何帮助都是伟大的,对不起我的英语不好,我想说,编码是非常新的话题,所以真的任何帮助都是伟大的。非常感谢。你知道吗


Tags: 函数inimportnumpyformatplotlibasnp
2条回答

你不能调用range(f),其中f是一个浮点数,这就是你得到的exveption。我想你应该用int(n)+1而不是n+1。你知道吗

问题是在for循环中,您将float参数传递给g函数,然后该函数用作range()的参数,该函数只接受int。尝试:

import numpy as np
import matplotlib.pyplot as plt

def g(n):
    return np.sum(range(1,n+1)) 

M = np.ones([3,5])

for i in range(3):
    for j in range(5):
        M[i,j] = g(int(i*j - 2*i**np.pi) )

编辑: 有点猜测,但也许这就是你想要的:

import numpy as np


def g(n):
    return np.sum(range(1,n+2)) 

M = np.ones([3,5])

for i in range(3):
    for j in range(5):
        M[i,j] = g(int(round(i*j - 2*i**np.pi, 0)) )

round将舍入该数字,而不是截断它,并且将g-s上界提高到n+2将确保n+1将被捕获。你知道吗

相关问题 更多 >