Python中的函数不断返回不必要的浮点值

Python中的函数不断返回不必要的浮点值,python,function,variables,type-conversion,Python,Function,Variables,Type Conversion,我有以下代码,不断产生错误: import math def pen_checker(number): print(number) for x in range(1, number): y = x*(3*x-1)/2 if(number == y): return True return False def pen_calculator(n): x = n*(3*n-1)/2 return x def

我有以下代码,不断产生错误:

import math
def pen_checker(number):
    print(number)
    for x in range(1, number):
        y = x*(3*x-1)/2
        if(number == y):
            return True
    return False
def pen_calculator(n):
    x = n*(3*n-1)/2
    return x
def main():
    pen1 = 1
    pen2 = 1
    pen1_val = 0
    pen2_val = 0
    crt_sum = 0
    crt_dif = 0
    MAX_CAP = 1000
    for pen1 in range(1, MAX_CAP):
        pen1_val = pen_calculator(pen1)
        for pen2 in range(1, MAX_CAP):
            pen2_val = pen_calculator(pen2)
            z = pen1_val + pen2_val
            if(pen_checker(z)== True and pen_checker(fabs(pen1_val-pen2_val))== True):
                print(fabs((pen1_val-pen2_val)))
main()
出于某种原因,函数
pen\u calculator()
似乎返回浮点。我知道从技术上讲,Python中没有变量类型,但在调用函数之前,所有内容都打印为:

一,

一,

二,

然后:

1.0

1.0

2.0

(那只是我试图找出问题所在,代码中没有写)


通常情况下,这不会有问题,但函数
pen\u checker
中的for循环要求“stop”为整数,因此代码无法工作。如何解决这个问题?

在Python3中,如果你用
/
除以数字,它将始终给你一个浮点数。如果你想除数得到一个整数,你可以使用
/
操作符。

在Python3中,如果你用
/
除数,它总是会给你一个浮点数。如果你想除以整数得到一个整数,你可以使用
/
操作符。

“从技术上讲,Python中没有变量类型”-什么?如果你想要一个整数,只需使用
int
。他是对的,变量没有类型。但函数pen_checker中的for循环要求“stop”为整数“为什么?可能是@KarolyHorvath ah的重复,我明白它们的意思了。”从技术上讲,Python中没有变量类型-什么?如果你想要一个整数,只需使用
int
。他是对的,变量没有类型。但函数pen_checker中的for循环要求“stop”为整数“为什么?可能是@KarolyHorvath ah的重复,我明白它们的意思了。”。