Search
Write a publication
Pull to refresh
0
0

Пользователь

Send message
А не лучше будет для авиасимов купить шлем VR вместо нескольких мониторов?
Мы не знаем что она возвращает. Мы знаем лишь, что она «иногда неправильно работает». Она может вернуть корректный ответ, может ничего не вернуть, может убить собаку пользователя или сделать ему минет. Иногда «undefined behavior» — это просто неопределенное поведение, а не ссылка на спецификации и википедию. Рад что таки смог донести свою мысль.
Вы — пользователь. Вам дали функцию — черный ящик. У вас есть набор гомогенных данных, соответствующих спецификации функции. Вы берете батч данных и отдаете функции — она возвращает корректный результат. Вы берете второй батч и отдаете функции — она возвращает не коррекный результат. Вы берете третий батч… Что вы будуте ожидать? Success? Error? Пока не выполните — не узнаете. Любой результат работы этого черного ящика будет не ожидаемым, так как вы просто не знаете чего ожидать :) «Иногда работает, иногда не работает» — это и есть неопределенное поведение. Если убрать слово «иногда», то да, она либо работает, либо нет — никакой неопределенности.
Я даже в гугл переводчик залез, чтоб удостовериться: «Undefined behavior» — «Неопределенное поведение». Если для различных входных данных соответствующих спецификации функции в одних случаях результат будет соответствовать ожидаемому, а в других — чушью, то является ли это «определенным поведением» или «неопределенным поведением» с точки зрения пользователя функции?
Вы написали не «неправильно работает», а «иногда неправильно работает». И в чем же разница с уб?
иногда неправильно отрабатывать

Это и есть undefined behavior. В каком именно месте не знаю — любви к чтению и разбору говнокода не имею, опираюсь лишь на ваши слова.
В итоге в питон чате единогласно сказали, что это говнокод, и так не пишут.

Правильно сказали. Очень тяжело читать подобное, особенно если подобного много.

будет просто иногда неправильно отрабатывать скрипт.

А вот и undefined behavior подьехал, здравствуйте однако.

Такие дела.
Извините, но надо быть просто конченым, чтоб хранить опасные данные на любом облаке.
Уважаемый, просто найдите ближайшего человека, обучающего людей програмированию (программированию, а не навыкам владения конкретным языком) и спросите чем отличаются циклы «for», «foreach» и «while», и он вам все доступно обьяснит.
Что касается цикла с выходом по условию, то в питоне есть нужный инструмент и зовется он «while». И он достаточно красив для этого языка.
Я лишь хотел сказать, что что в питоне забавная версия обьединения двух разных по сути циклов с названием одного, а механикой другого. И говоря, что конструкцию вида «for i in range(len(seq)):» не стоит использовать, нужно уточнять, что это касается искличительно ситуаций итерирования обьекта. Для имитации же именно поведения «for» эта конструкция вполне легальна.
Строго говоря в питоне вообще нет «for» — есть только «foreach». И инкремента индекса (как и самого индекса) тоже нет — есть проход по списку, сгенерированому функцией range() или поданому явно.

С++ обычно не рассматривается в отрыве от С, так как является его надмножеством, а в С вполне есть старый добрый «for» без всяких последовательностей. В JS эти два цикла вообще вроде бы разделены друг от друга?
«for» — цикл с известным количеством итераций. Не больше и не меньше. В этом его назначение и смысл, всё остальное зависит от контекста его применения. Для итерации по последовательностям применяется «foreach» и его аналоги. Это разные циклы, с разной идеологией применения, и то что в питоне их обьединили в одно не ставит между ними знак равенства.
Автор статьи же затрагивает только «foreach» составляющую, что прямо противоречит названию и аннотации статьи и может ввести людей в заблуждение.
Оно всё так, но…
«Питонистический подход к циклам for: range() и enumerate()»

Автор заметки, перевод которой мы сегодня публикуем, хочет рассказать о некоторых особенностях использования циклов for в Python.


В самой статье же рассматривается только итерация по спискам, хотя это вообще не является прямой задачей цикла «for». Так что тут либо название статьи менять, либо раскрывать тему нормально, а то сейчас впечатлительные начитаются и будут везде писать что «for i in range(len(seq)):» порочно независимо от контекста.

ЗЫ: Не могу влепить статье дизлайк, буду благодарен, если кто-то сделает это за меня.
scores = [54,67,48,99,27]
for i in range(len(scores)):
   print(i, scores[i])

Проблема этого цикла заключается в том, что он не очень хорошо соответствует идеологии Python. В нём мы не перебираем список, а, вместо этого, используем вспомогательную переменную i для обращения к элементам списка.


Я так и не понял в чем, собственно, проблема? Что если мне нужно организовать цикл на заданное количество шагов, не работая непосредственно со списком? Сколько раз читал про это, но нигде не увидел реально обоснованой причины так не делать. Заявления, что это «непитонично», звучат как пук в банку. Могли бы хоть сравнения замеров быстродействия выложить или детальный разбор механизмов работы.
Еще как сработает. Только надо чтоб кликал один доброволец заданное количество раз (200 раз, например). Также он не должен знать о последующей награде за это. По окончании действа выдаем ништяк (сникерс, например), чем подталкиваем детей к дальнейшей активности на занятиях (можно один сникерс в пару\через пару). Затем показываем и запускаем небольшой скрипт, делающий то же самое и показываем разницу во времени выполнения между человеком и машиной. Озвучиваем, на сколько быстрее и проще он мог получить свой приз. Дело сделано — дети знают что такое и зачем нужна автоматизация, ЯП и т.д. + мотивированы на активность.

Information

Rating
Does not participate
Location
Россия
Registered
Activity