@ru_python

Страница 5744 из 9768
Aragaer
24.06.2018
11:10:09
без вайла

вообще 8)

first
24.06.2018
11:10:32
Aragaer
24.06.2018
11:10:52
ну напиши функцию, которая читает число, и если это 0, то ничего больше не делает

Google
first
24.06.2018
11:11:02
мм

Maxim
24.06.2018
11:11:03
x)

Aragaer
24.06.2018
11:11:06
а если не 0, то .... все с начала

Maxim
24.06.2018
11:11:11
Хороший тест на джуна

Aragaer
24.06.2018
11:11:28
а когда я говорю "все с начала", то я говорю про рекурсию

ваван
24.06.2018
11:12:55
def fun(): i=int(input()) while i!=0: i=int(input()) print(i) вот только функция без параметра

Aragaer
24.06.2018
11:13:09
да

ок. А теперь сделай там while True, а проверку убери внутрь

def fun(): while True: i = int(input()) if i == 0: break

ну print тоже куда-то добавить можно, но пока не надо

пока понятно?

Maxim
24.06.2018
11:14:59
есть разница между пустым return и break?

?
24.06.2018
11:15:09
Такой вопрос Есть структура класса есть стока print( ....doc ) Как мне указать doc этого класса, не называя его имени типо print( object.doc ) Так сказать ссылаться на doc класса не указывая явно его названия, а используя метапеременную

Google
Aragaer
24.06.2018
11:15:15
в общем случае - да, тут нет

type(myObject).__doc__

не?

ваван
24.06.2018
11:16:45
пока понятно?
пока да, поковыряюсь

Aragaer
24.06.2018
11:16:56
насчет "задачка для джуна" - я бы сказал, что джун еще должен объяснить, почему в этой ситуации я говорю "хранить на стеке"

Maxim
24.06.2018
11:17:41
ну потому что там такая луковица получается

Aragaer
24.06.2018
11:17:55
когда я был маленьким джуном, я писал софтину на жаве+си. И там надо было из жавы вызывать сишный код, из си жавовский и в итоге получались, правильно, луковицы

и у меня была глобальная переменная JNIEnv, которая в этих луковицах по идее перетиралась

и мне шеф сказал "а ты ее на стеке сохраняй"

я подумал, что значат эти слова, а потом до меня дошло

Maxim
24.06.2018
11:19:03
олсо, кстати

а, не все ок

Aragaer
24.06.2018
11:19:20
когда я был в сишном коде у меня было какое-то значение JNIEnv. Когда я прилетал туда из жавы, прилетало новое значение. Я сохранял старое на стеке и начинал работать. Когда заканчивал, восстанавливал старое значение

?
24.06.2018
11:19:26
Aragaer, [24.06.18 18:15] type(myObject).__doc__

Не

Maxim
24.06.2018
11:19:46
я тут сначала подумал почему новый инпут не перетирает старый

Aragaer
24.06.2018
11:20:14
потому что старый остался в предыдущем стек фрейме 8)

Maxim
24.06.2018
11:20:16
а потом допер что я не объявляю а вызываю новую функцию, и поэтому у них разный неимспейс

def func_a(): a = 1 def func_b(): print(a)

Google
Aragaer
24.06.2018
11:20:54
не, неправильная формулировка 8)

Igor
24.06.2018
11:20:58
Есть люди, которые работали с PyQt5? Мне нужен ответ на маааленький вопрос

?
24.06.2018
11:21:31
Да

Maxim
24.06.2018
11:22:21
def func_a(): a = 1 def func_b(): print(a)
вот тут дочерняя может залезать в стек родителя, с этим спутал

Aragaer
24.06.2018
11:22:33
а, это да

https://www.youtube.com/watch?v=Ps8jOj7diA0 - прикольный курс лекций. В начале дядька на си все показывает, потом к ассемблеру переходит. Я дошел до 12 лекции, времени не было продолжить.

Maxim
24.06.2018
11:23:52
кстати, очень плохо когда в функции есть вложенные функции которые неявно меняют переменные?

Aragaer
24.06.2018
11:24:02
но в какой-то момент он там очень четко рассказывает про стекфреймы и вызовы

ваван
24.06.2018
11:25:25
почти, print (i) break print (i) вот так как то, где взять обратный порядок?

Aragaer
24.06.2018
11:25:51
давай пока без обратного порядка

просто "читать, пока не ноль, а когда ноль, то закончить работу"

Maxim
24.06.2018
11:26:02
короче, представь луковицу

на которой слой за слоем вырастают твои цифры

ваван
24.06.2018
11:27:13
def fun(): while True: i = int(input()) if i == 0: print (i) break print (i) fun() вот же все мне расписал,

Aragaer
24.06.2018
11:27:41
убери пока print

вот вообще

ваван
24.06.2018
11:27:56
и?

Tishka17
24.06.2018
11:28:11
О_о

Что вы пишете?

Maxim
24.06.2018
11:28:28
рекурсия

Google
ваван
24.06.2018
11:28:36
задача

Maxim
24.06.2018
11:28:50
прога. Вводятся числа (число, энтер, число энтер ...)

когда ввели 0, то надо вывести все числа в обратном порядке и закончить

нельзя пользоваться списками

ну и ничем другим таким динамическим

присоединяйся

)

Aragaer
24.06.2018
11:29:05
а теперь сделай чтобы не было while

- Прочитать число - Если 0, то все - Повторить

ваван
24.06.2018
11:29:24
ааа, ща попробую

Aragaer
24.06.2018
11:29:33
и "повторить" это должен быть рекурсивный вызов опять того же самого

Tishka17
24.06.2018
11:30:38
Ну да, нельзя свой стек, юзаем системный

Прикольно

ваван
24.06.2018
11:35:21
def fun(): i = int(input()) if i == 0: pass fun() fun() вот, легко же. break почему не проходит

Aragaer
24.06.2018
11:35:44
не pass только

return

break проходит только чтобы выйти из цикла

pass ничего не делает и в твоем случае это будет "читаем число, повторить"

ваван
24.06.2018
11:36:52
вы тут все про стек, до этого в учебнике про это ничего не было

да читает пока не кончатся

Google
Aragaer
24.06.2018
11:37:14
сделай return

вместо pass должен быть return

а теперь смотри. Уже была у тебя аналогия с луковицей. Ты берешь первый слой. Понимаешь, что он не последний. Поэтому ты идешь глубже

и так, пока не достигнешь самого глубокого

а потом ты начинаешь возвращаться

все, что ты напишешь после вызова fun() будет выполняться уже при возврате из рекурсии

ваван
24.06.2018
11:39:21
да лучше, почти пришло, как взять значение из стека7

Aragaer
24.06.2018
11:40:03
оно прямо перед тобой 8)

print(i)

не из стека. Когда ты находишь в этом стекфрейме, это значение находится в переменной i

ваван
24.06.2018
11:43:42
ага, вроде осознал

Aragaer
24.06.2018
11:44:37
и как выглядит функция в итоге?

NoNick
24.06.2018
11:44:57
Блет, получаю через реквест гет хтмл, передаю в imgkit.fromstring и получаюэто



Aragaer
24.06.2018
11:45:44
наверно потому что request.get возвращает не строку, а bytes

Страница 5744 из 9768