2015-02-22 2 views
0

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

def item(number, terminator, step): 
    while number < terminator: 
     return (number) 
     number += step 

item(1.00, 1.12, 0.01) 

консоли не печатают любые ошибки, он не печатает None, он просто ничего не делает. Он запускает программу и ничего не делает. Я очень смущен. Что не так с моим кодом?

ответ

2

Есть две ошибки:

  1. Вы ничего не печатает. Функция item() возвращает, и вы проигнорировали возвращаемое значение. Интерактивный интерпретатор Python перекликается с почти тем, что вы делаете, но для обычного сценария требуется явно распечатать.

  2. Вы возвращаете первое значение диапазона. returnзаканчивается функция.

Вы можете создать список значений первого и возврата, которые, затем распечатать результат:

def item(number, terminator, step): 
    items = [] 
    while number < terminator: 
     items.append(number) 
     number += step 
    return items 

print(item(1.00, 1.12, 0.01)) 

Демо:

>>> def item(number, terminator, step): 
...  items = [] 
...  while number < terminator: 
...   items.append(number) 
...   number += step 
...  return items 
... 
>>> print(item(1.00, 1.12, 0.01)) 
[1.0, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11] 

В качестве альтернативы, использовать yield вместо return, чтобы включить вашу функцию в generator и обведите результаты:

def item(number, terminator, step): 
    while number < terminator: 
     yield number 
     number += step 

for value in item(1.00, 1.12, 0.01): 
    print(value) 

, который производит:

>>> def item(number, terminator, step): 
...  while number < terminator: 
...   yield number 
...   number += step 
... 
>>> for value in item(1.00, 1.12, 0.01): 
...  print(value) 
... 
1.0 
1.01 
1.02 
1.03 
1.04 
1.05 
1.06 
1.07 
1.08 
1.09 
1.1 
1.11 
Смежные вопросы