2015-01-28 2 views
0

Я следующий код, который продолжает производить ошибки:Функция в Python продолжает возвращаться ненужные поплавки

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() кажется вернуть поплавки. Я знаю, что технически, нет типов переменных в Python, но прежде чем я вызвать функцию, все печатается:

А потом :

1.0

1,0

2,0

(Это был только я пытаюсь выяснить, что это неправильно, это не написано в коде)

Обычно, это не было бы никаких проблем, но для- цикл в функции pen_checker требует, чтобы «стоп» был целым числом, поэтому код не будет работать. Как я могу это решить?

+0

* «технически, в Python нет переменных типов» * - что? Если вы хотите целое число, просто используйте 'int'. – jonrsharpe

+0

Он прав, переменные не имеют типов. значения имеют. –

+0

"но для цикла в функции pen_checker требуется, чтобы« стоп »был целым числом« почему? – Jasper

ответ

5

В Python3, если вы делите числа с /, он всегда будет давать вам поплавок. Если вы хотите разделить целые числа и получить целое число, вы можете использовать оператор //.

+2

Интересно ... вы узнаете что-то новое каждый день. – Eithos