2013-05-22 11 views
0

Я начал изучать python несколько недель назад (без предварительного знания программирования) и застрял в следующей проблеме, которую я не понимаю. Вот код:while loop in python issue

def run(): 
    count = 1 
    while count<11: 
     return count 
     count=count+1 

print run() 

Что меня смущает, почему печать этой функции приводит к: 1? Не следует ли печатать: 10?

Я не хочу составлять список значений от 1 до 10 (просто чтобы убедиться, что я), поэтому я не хочу добавлять значения. Я просто хочу увеличить ценность моего счета до тех пор, пока он не достигнет 10.

Что я делаю неправильно?

спасибо.

+5

Вы «возвращаетесь» перед тем, как петля имеет шанс выстрелить. – squiguy

ответ

5

Первое, что вы делаете в цикле while, - это текущее значение count, которое бывает 1. Цикл никогда не проходит мимо первой итерации. Python is Отступ чувствителенвсе языки, которые я знаю, чувствительны к порядку).

Переведите return после цикла while.

def run(): 
    count = 1 
    while count<11: 
     count=count+1 
    return count 
+0

Благодарим вас за ответ. Но я до сих пор не понимаю принцип. Является ли «возврат» эквивалентом «перерыва»? – stgeorge

+0

@stgeorge Нет, 'return' оставляет текущий вызов функции. 'break' может использоваться для выхода из определенной области. Вы можете больше узнать об этом в [грамматике Python] (http://docs.python.org/2/reference/simple_stmts.html#the-return-statement). – squiguy

+0

Извините, это слишком много для меня (объяснение грамматики на Python). Однако, спасибо. – stgeorge

0

Возврат завершает работу раньше, запрещая ее переходу на добавочную часть.

1

Изменить на:

def run(): 
    count = 1 
    while count<11: 
     count=count+1 
    return count 

print run() 

так, что возвращается значение после вашего цикла.