Python 中的函数不断返回不必要的浮点数
Function in Python keeps returning unnecessary floats
我有以下代码,它不断产生错误:
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_calculator()
似乎 return 浮动。我知道从技术上讲,Python 中没有变量类型,但在我调用该函数之前,所有内容都打印为:
1
1
2
之后:
1.0
1.0
2.0
(那只是我想找出问题所在,代码中没有写)
通常情况下,这不会有问题,但函数 pen_checker
中的 for 循环要求“停止”为整数,因此代码无法运行。我该如何解决?
在Python3中,如果你用/
除数,它总是会得到一个浮点数。如果你想除以整数并得到一个整数,你可以使用//
运算符。
我有以下代码,它不断产生错误:
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_calculator()
似乎 return 浮动。我知道从技术上讲,Python 中没有变量类型,但在我调用该函数之前,所有内容都打印为:
1
1
2
之后:
1.0
1.0
2.0
(那只是我想找出问题所在,代码中没有写)
通常情况下,这不会有问题,但函数 pen_checker
中的 for 循环要求“停止”为整数,因此代码无法运行。我该如何解决?
在Python3中,如果你用/
除数,它总是会得到一个浮点数。如果你想除以整数并得到一个整数,你可以使用//
运算符。