Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 14.02.2020
Сообщений: 11

Как работает код?

15.02.2020, 20:24. Показов 1934. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: Определить, что выведет программа.
Код выводит:
1
2
3
4
Всё!
#Почему выводится это? Ведь указан шаг "2", значит должно выводить значения через раз. Т.е.: 1 3 (5 скипается) Всё!
Python
1
2
3
4
5
6
7
8
9
10
a=0
n=10
for i in range(1,n+1,2):
    a=a+1
    if a==5:
        continue
    print (a)
    if a==7:
        break
print ("Всё!")
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2020, 20:24
Ответы с готовыми решениями:

Как можно максимально оптимизировать данный код через логическое индексирование? Код полностью работает
header = data = , , , , , , , , , , , , ] import numpy as np def salary_info_purchased(data, gender=None, purchased=None): ...

Код написан в Dev C. Не работает в Visual. Как нужно переделать код?
Здравствуйте. Столкнулась с такой проблемой: код был написан в Dev C, но в Visual он выдаёт ошибку. ...

Код выполняемый из студии с пометкой debag, работает не так как уже компилированный код
Здравствуйте, столкнулся с такой проблемой. Код выполняемый из студии с пометкой debag, работает не так как уже компилированный код....

16
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
15.02.2020, 20:32
Цитата Сообщение от ebalor Посмотреть сообщение
Почему выводится это? Ведь указан шаг "2", значит должно выводить значения через раз. Т.е.: 1 3 (5 скипается) Всё!
Цикл по переменной i, а выводите на экран переменную a
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
15.02.2020, 20:42
ebalor, это потому, что
Python
1
 continue
Добавлено через 39 секунд
вот так работает
https://pythonworld.ru/osnovy/... -else.html

Добавлено через 3 минуты
На словах, сие выглядит так: continue на шаге, где он поставлен, обрывает цикл и переходит к след условию)(визуально - вывод слова "все!",если сумма достигнет 5, а 5 она достигнает )

Добавлено через 1 минуту
Цитата Сообщение от tooru Посмотреть сообщение
Цикл по переменной i,
обрыается по условию работы continue

Добавлено через 1 минуту
и дальше проверяется именно значение а
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
15.02.2020, 20:45
Цитата Сообщение от Dax Посмотреть сообщение
continue на шаге, где он поставлен, обрывает цикл и переходит к след условию
continue переходит на следующую итерацию цикла, i+1, а цикл завершается, так как в нем всего 5 шагов
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
15.02.2020, 20:48
tooru, Ваша правда
0
0 / 0 / 0
Регистрация: 14.02.2020
Сообщений: 11
15.02.2020, 20:55  [ТС]
Я ничего не понял(
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
15.02.2020, 21:32
Цитата Сообщение от ebalor Посмотреть сообщение
Я ничего не понял
Не используй счетчики. Для этого есть enumerate.
Python
1
2
3
4
5
6
7
>>> list(enumerate(range(1,10+1,2)))
[(0, 1), (1, 3), (2, 5), (3, 7), (4, 9)]
>>>
>>> # для отсчета с 1
>>> list(enumerate(range(1,10+1,2),1))
[(1, 1), (2, 3), (3, 5), (4, 7), (5, 9)]
>>>
То есть при значении счетчика равном 5 цикл находится на последней итерации. Это и есть "Все".
И поскольку инструкцией continue ты не даешь нормально завершиться итерации - последнее значение не выводится.
0
0 / 0 / 0
Регистрация: 14.02.2020
Сообщений: 11
15.02.2020, 22:13  [ТС]
Так. Я более менее понял почему выводятся 1234, но не понял, почему не выводятся 6 и 7. "Если а==5, то скипается". А с 6 и 7?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
15.02.2020, 22:45
Garry Galler, Здесь не ставится задача решить по некоторому условию. А ТС просит объяснит как работает код который он выложил и где используется range, а не enumerate, хотя последний и эффективнее. То есть, как я понимаю, он просит сделать разбор его кода. А так, как использование range не является ошибкой, то не стоит заставлять его переходить на enumerate.
ebalor, , Задание дурацкое, а почему так происходит вам объяснил tooru.
Смысл этого кода, как я его понимаю, выводить порядковый номер цикла (порядковый номер шага цикла) 1 2 3 4, порядковый номер шага 5 пропустить с помощью continue и на шаге 7 закончить цикл. При этом пример показывает, что переменная цикла, в данном случае i, это не то же самое, что и шаг цикла. Переменная цикла прыгает через раз, 1 3 5 7, а шаги цикла демонстрирует переменная "а" 1 2 3 4.
Пример кто то придумывал с больной фантазией, он не поясняет разницу между переменной цикла и шагом цикла, а наоборот запутывает учащегося.

Добавлено через 11 минут
ebalor, На шаге 5 (где кстати переменная цикла равна 7) действительно скип.

Добавлено через 19 минут
А шестого шага а=6 уже нет, так как i=11 ,быть не может( максимальное i=9 а 9+2 (11) выходит за диапазон переменной i, который от 1 до 9. И программа выходит из цикла и печатает "Все!"
Строки 8 и 9
if a==7:
break
вообще здесь лишние, никогда не работают, и служат только для того, что бы запутать учащегося.
1
0 / 0 / 0
Регистрация: 14.02.2020
Сообщений: 11
15.02.2020, 22:46  [ТС]
а = 1 i = 1
a = 2 i = 3
a = 3 i = 5
a = 4 i = 7
a = 5 (скип по условию) i = 9
a = 6 i = 11 # на этом моменте конец промежутка i
Почему дальше выводится Всё! при а==7 и не выводится 6, если она входит в промежуток?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
15.02.2020, 22:47
Я говорю идиотский код. Сделан как ловушка для тестируемого ученика.
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
15.02.2020, 22:49
Цитата Сообщение от ebalor Посмотреть сообщение
a = 6 i = 11 # на этом моменте конец промежутка i
Почему дальше выводится Всё! при а==7 и не выводится 6, если она входит в промежуток?
range не включает последнюю цифру интервала, он только до 10, поэтому после i = 9 цикл прерывается
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
15.02.2020, 22:54
Лучший ответ Сообщение было отмечено ebalor как решение

Решение

Цитата Сообщение от ebalor Посмотреть сообщение
Почему дальше выводится Всё! при а==7 и не выводится 6, если она входит в промежуток?
потому, что промежуток для "i", а не для "а". Я выше написал почему при "а" равном 6 выходит из цикла и не печатает 6, а печатает Все!

Добавлено через 2 минуты
До а==7 вообще не доходит, так как на а ==6 уже выходит из цикла, и пишет Все!
1
0 / 0 / 0
Регистрация: 14.02.2020
Сообщений: 11
15.02.2020, 23:05  [ТС]
Получается до второго условия "а" может и не доходить, чтобы выполнить его? а==6 все равно выполнит его, так как последующих не существует?
Ля. Не проще было поставить else: break ?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
15.02.2020, 23:16
Да, до второго условия никогда не доходит. Код дурацкий и служит только для того, что бы запутать того, кто его читает.
0
0 / 0 / 0
Регистрация: 14.02.2020
Сообщений: 11
15.02.2020, 23:23  [ТС]
Большое спасибо вам всем за то, что помогли разобраться! <3
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
16.02.2020, 00:12
Цитата Сообщение от Viktorrus Посмотреть сообщение
почему при "а" равном 6 выходит из цикла
Код завершает итерацию когда a == 5, i==9. И это его самый последний шаг. При это 5 не выводится.
Code
1
2
3
4
5
6
1
2
3
4
continue
Всё!
Без continue был бы просто вывод последнего значения a==5, то есть итерация дошла бы нормального завершения последнего шага.
А break и вовсе никогда недостижим при таком диапазоне range.
Весь код - одно сплошное недоразумение. А все потому, что люди не пользуются встроенными функциями и придумывают всякую ерунду.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2020, 00:12
Помогаю со студенческими работами здесь

Не работает код как надо кто может сказать мне, почему не работает как надо?
Сама задача: (Компьютерное моделирование: заяц и Черепаха) В атом упражне-нии вам предстоит воспроизвести одно из великих исторических...

Написать код, который будет выполняться и как C# код, и как Java код, и как JavaScript код
Написать код, который будет выполняться и как C# код, и как Java код, и как JavaScript код. При запуске этого файла должна выводиться...

Как мне правильно пояснить как работает этот код
Помогите. Вот код я просто не мог понять как правильно объяснить #include &lt;iostream&gt; using namespace std; int main(void) { int...

Как работает код?
Здравствуйте! Объясните пожалуйста как работает код на asm построчно. Код на asm: ifndef ??version ?debug macro endm ...

как работает код на с++?
Объясните как работает этот код пожалуйста, перевод с 2 системы в 10 #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru