Форум сайта python.su
Я немного модефицировал пример из офф. туториала:
def prime(pr):
for n in xrange(2,pr):
for x in xrange(2,n):
print ‘n=’,n,'x=',x,'n%x=',n%x
if n%x==0:
print n,'=',x,'*',n/x
break
else:
print n, ‘- prime number’
Вот вывод
>>> prime(6)
2 - prime number
n= 3 x= 2 n%x= 1
3 - prime number
n= 4 x= 2 n%x= 0
4 = 2 * 2
n= 5 x= 2 n%x= 1
n= 5 x= 3 n%x= 2
n= 5 x= 4 n%x= 1
5 - prime number
Два вопроса:
Поскольку выскочило 2 - prime number, делаю вывод что цикл for x in xrange(2,n): не выполнялся. Почему?
Вот в документации(7.3 The for statement) сказано: A break statement executed in the first suite terminates the loop without executing the else clause's suite. A continue statement executed in the first suite skips the rest of the suite and continues with the next item, or with the else clause if there was no next item. Эээ … получается что else выполняется всегда когда в цикле for x in xrange(а,b) a=b ? Поэтому выскочило 2 - prime number? Или как?
Отредактировано (Дек. 29, 2007 18:57:58)
Офлайн
>>> a = 1 >>> list( xrange(a,a) ) []
>>> for i in (1,2): ... i ... else: ... i ... 1 2 2
Офлайн
Спасибо Daevaorn, я понял.
Офлайн
код набранный не в шелле работает как то иначе, чем код набранный в шелле:
for i in(1,2): i else: print 'a',i >>> a 2 >>>
>>> for i in(1,2): i else: print 'a',i 1 2 a 2
Офлайн
Leron
в шелле не обязательно писать print. в скрипте обязательно
Офлайн
Ну без print'а выдаёт в таком виде:
1
2
('a', 2)
Мне что требуется понять: почему в скрипте интерпритатор перешёл к else? Вроде сначала i должно быть присвоено 1, потом 2, потом уже выполняется else.
Офлайн
Leronтак и произошло. просто ты запутался в вводе.где-то не тот индент.
Мне что требуется понять: почему в скрипте интерпритатор перешёл к else? Вроде сначала i должно быть присвоено 1, потом 2, потом уже выполняется else.
Офлайн
Разобралсо. Дело не в табуляции.
DaevaornВ этом всё дело. Если поставить после for вместо i поставить print i то всё работает как надо.
в шелле не обязательно писать print. в скрипте обязательно
Офлайн
Чет не пойму, вопрос решен иле не решен, и вчем он заключается: про цикл и элс, или про вывод в шелле? Если не решен, то можно уточнить что нужно?
Офлайн
lukkeВопрос решён, всё пучком))
Чет не пойму, вопрос решен иле не решен, и вчем он заключается: про цикл и элс, или про вывод в шелле? Если не решен, то можно уточнить что нужно?
Офлайн