
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, которая в этих луковицах по идее перетиралась
и мне шеф сказал "а ты ее на стеке сохраняй"
я подумал, что значат эти слова, а потом до меня дошло

Igor
24.06.2018
11:18:46

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

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