|
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
|
|
Определите значение второго по величине элемента последовательности27.02.2020, 21:46. Показов 12586. Ответов 166
Метки нет (Все метки)
пытаюсь научиться языку Питон-3, просмотрел некоторые поверхностные курсы по языку, вроде все понятно, но когда к примеру стал проходить курс с заданиями вот здесь https://www.coursera.org/learn... -maksimumu то до цикла While дополз, но когда посыпались задания типа: Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой последовательности, то есть элемента, который будет наибольшим, если из последовательности удалить одно вхождение наибольшего элемента. плюс всякие числа Фабиочи, то я поплыл...
понятно, что код можно загуглить, НО какой толк от такой учебы...? вот стою перед выбором, бросать все это программирование т.к. моих мозгов и логики мышления не хватает на это или бросать этот курс, что посоветуете?... для меня это очень важно...
0
|
|
| 27.02.2020, 21:46 | |
|
Ответы с готовыми решениями:
166
Определить значение второго по величине элемента в последовательности
Определите значение второго по величине элемента в последовательности |
|
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
|
|||||||||||||
| 14.03.2020, 20:30 [ТС] | |||||||||||||
|
range(n + 1) вполне же работает.. Добавлено через 57 секунд Добавлено через 51 минуту а вот если усложнить немного, что бы найти факториал то уже даже смотря на код готовый, непонятно..
если через список, то не понятно почему (2, ...) с 2ки начинается.. сам бы то же такое не додумался написать..
0
|
|||||||||||||
| 14.03.2020, 22:22 | ||||||||
|
Добавлено через 46 минут Рассмотрим пример вычисления факториала с помощью цикла while. Факториал равен 6 при n=3, так как f = 1*2*3 равно 6.
n в цикле одновременно используется как счетчик, но не возрастающий, а убывающий (3, 2, 1). Но когда n станет равным единице 1, то цикл прервется. И так при первом проходе: n == 3, условие выполняется и выполняется проход цикла f = f * n # f = 1 * 3 == 3, счетчик уменьшается на единицу n = n - 1 # n = 3 - 1 == 2 При втором проходе: n == 2, условие выполняется и выполняется второй проход где f уже равно 3 и потому получим f = f * n # f = 3 * 2 == 6, счетчик уменьшается на единицу n = n - 1 # n = 2 - 1 == 1 Так как n теперь равно единице 1 , то условие цикла уже не будет выполнятся и следующего прохода не будет, цикл прервется. При этом f останется равным шести, f == 6 , что и будет выведено на экран инструкцией print(f), которая находится за пределами цикла и будет выполнена после того, как цикл прервется.
1
|
||||||||
|
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
|
||||||
| 14.03.2020, 22:35 [ТС] | ||||||
|
по while очень хорошо расписали, спасибо!
а по вот этому
0
|
||||||
| 14.03.2020, 23:23 | ||||||||||||
Для вычисления факториала мы должны последовательно умножать результат S на очередной сомножитель, из (1, 2, 3). Итерируемый объект, который формируется функцией range(1, n+1) содержит в себе числа (1, 2, 3), которые он выдает по одному в переменную цикла i при каждом шаге цикла. S мы ввели, потому что без заранее заданного значения S не будет работать формула S = S * i , так как не возможно будет вычислить правую часть инструкции "=". А присвоили единицу, что бы она не влияла на результат произведения сомножителей факториала. Добавлено через 11 минут coa3, Я не знаю, про итераторы ты читал или нет, потому что строго говоря функция range(1, n+1) создает объект range
Добавлено через 1 минуту Если про итераторы еще не читал, то пока не бери в голову.
1
|
||||||||||||
|
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
|
||
| 14.03.2020, 23:25 [ТС] | ||
|
так? об этом речь?
0
|
||
| 14.03.2020, 23:36 | ||
|
1
|
||
|
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
|
||||||
| 16.03.2020, 15:39 [ТС] | ||||||
|
Посчитать сколько символов в строке являются цифрами и их сумму
во первых как вводятся эти символы, а потом сортировка их на str и на все остальные...
0
|
||||||
| 16.03.2020, 17:14 | ||||||||||||||||
|
coa3, Алгоритм здесь такой. Нужно рассмотреть все символы в строке (которая является последовательностью символов) и для тех из них, которые являются цифрами, найти их сумму. Нужно рассматривать по одному символу и если это не цифра то ничего не делать с ним, а если это цифра, то прибавлять к сумме. Для этого использовать цикл, лучше for.
Для проверки, является ли символ цифрой, используй метод
Вернёт True, если в строке хотя бы один символ и все символы строки являются цифрами, иначе — False.
Добавлено через 8 минут И еще, когда отлаживаешь код, не нужно делать ввод с клавиатуры. Пока закомментируй ее.
1
|
||||||||||||||||
|
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
|
|||||||
| 16.03.2020, 18:58 [ТС] | |||||||
0
|
|||||||
| 16.03.2020, 20:21 | ||||||
|
coa3, Уже есть прогресс, но в коде есть ошибки, давай их разберем.
Во первых чисто косметически, обычно через i обозначают переменную цикла, ассоциирующуюся с шагом цикла. В данном случае берутся символы из строки, поэтому переменную цикла лучше назвать ch (сокращение от character). А переменную суммы лучше назвать s (первая буква от sum). Но это только для лучшей читаемости, на работу кода это не влияет. А теперь об ошибках. Строка это последовательность символов и потому является итерируемым объектом. Поэтому преобразование ее в список является лишним. Но собственно самих главных ошибок, почему код не работает, их две. Первая это то, что переменная цикла получает на каждом шаге строку из одного символа, и если этот символ цифра, то что бы ее прибавлять к сумме, нужно преобразовать этот символ в число с помощью функции int(). Вторая ошибка, это то, что печатать сумму нужно за пределами цикла, когда он закончится. А как у тебя, печатать будет не только конечную сумму, а также все промежуточные значения суммы при каждом шаге цикла, так как print() размещен у тебя внутри тела цикла. А вот как выглядит правильный код
Кстати, ты используешь отладчик при написании кода? Он показывает твои ошибки.
1
|
||||||
|
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
|
|
| 16.03.2020, 20:21 [ТС] | |
|
так писал код чисто интуитивно, не особо разбираясь, что пишу, оказалось код получился почти рабочим, ну за исключением int и print не туда влепил...
неужели мозги чуть чуть начинают в правильном направлении работать...?
0
|
|
|
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
|
||
| 16.03.2020, 20:29 [ТС] | ||
|
скажите, а как вводить с клавиатуры сразу список?
0
|
||
| 16.03.2020, 20:53 | |||||||||||||||||
1
|
|||||||||||||||||
|
|
|||||||
| 16.03.2020, 20:57 | |||||||
1
|
|||||||
| 16.03.2020, 21:05 | ||||||||||||
|
Вот пример
1
|
||||||||||||
|
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
|
||||||
| 17.03.2020, 14:14 [ТС] | ||||||
|
Найти в списке число, которое встречается чаще всего
дальше понимаю что надо применять s.count() и через max() найти максимально повторяющийся объект но в скобки count надо поместить конкретный элемент, как поместить все элементы списка по очередно не могу придумать, как голову не ломал... такое понятно не работает...
0
|
||||||
| 17.03.2020, 18:42 | ||||||
|
coa3, Наиболее эффективно для таких задач использовать метод Counter из модуля collections. Ты модули еще не изучал, но для предварительного ознакомления рассмотрим решение этим способом позже (пример такого решения здесь
Вывести элементы списка, которые встречаются только один раз ). А сначала для практики решим этот пример используя count(). Так как count() ищет количество вхождений для одного элемента, то что бы проверить количество вхождений для каждого элемента, очевидно нужно использовать цикл for. Для поиска числа с максимальным вхождением инициализируем перед циклом переменную, значением которой является пара, у которой первым элементом является число из списка, для которого на текущий момент мы выявили наибольшее количество вхождений, а вторым элементом пары будет его количество вхождений. Для инициализации можно присвоить пару нулей. m = (0, 0) Затем в цикле для каждого элемента из списка находим количество его вхождений и затем если их число больше чем в m то заносим проверенный элемент в первую позицию пары (смещение 0), а его количество вхождений во вторую позицию пары (смещение 1). Напиши код как получится и мы его разберем. Добавлено через 7 минут Для образца работы с парой
0
|
||||||
|
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
|
||||||
| 18.03.2020, 16:14 [ТС] | ||||||
|
параллельно пытаюсь решить другую задачку, что бы мозги переключить с того, что не получается...
#Дана строка, в которой буква h встречается минимум два раза.Удалите из этой строки первое и # последнее вхождение буквы h,а также все символы, находящиеся между ними.
0
|
||||||
|
Модератор
|
||||||
| 18.03.2020, 16:23 | ||||||
|
coa3, del a[int(b):int(c)] это означает удалить срез строки от (x, y), то бишь ты получаешь срез и удаляешь его, бегом учить основы!
Добавлено через 2 минуты
0
|
||||||
| 18.03.2020, 16:23 | |
|
Определите значение второго по величине элемента в этой последовательности (использовать рекурсию) Определите значение второго по величине элемента в этой последовательности
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|