Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/48: Рейтинг темы: голосов - 48, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101

Определите значение второго по величине элемента последовательности

27.02.2020, 21:46. Показов 12574. Ответов 166
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пытаюсь научиться языку Питон-3, просмотрел некоторые поверхностные курсы по языку, вроде все понятно, но когда к примеру стал проходить курс с заданиями вот здесь https://www.coursera.org/learn... -maksimumu то до цикла While дополз, но когда посыпались задания типа: Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой последовательности, то есть элемента, который будет наибольшим, если из последовательности удалить одно вхождение наибольшего элемента. плюс всякие числа Фабиочи, то я поплыл...
понятно, что код можно загуглить, НО какой толк от такой учебы...?
вот стою перед выбором, бросать все это программирование т.к. моих мозгов и логики мышления не хватает на это или бросать этот курс, что посоветуете?...
для меня это очень важно...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2020, 21:46
Ответы с готовыми решениями:

Определить значение второго по величине элемента в последовательности
Последовательность состоит из различных натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой...

Определить значение второго по величине элемента в данной последовательности
Задача звучит так: Последовательность состоит из различных натуральных чисел и завершается числом 0. Определите значение второго по...

Определите значение второго по величине элемента в последовательности
Написать программу на С++, используя циклы for и/или while, можно использовать if. Последовательность состоит из различных натуральных...

166
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
25.03.2020, 00:05
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от coa3 Посмотреть сообщение
for x in range(0, -1, 1):
И так, твои ошибки. Функция range() записана не правильно. Она возвращает пустой итератор
Python
1
2
>>> list(range(0, -1, 1))
[]
,
а должна возвращать итератор содержащий числа, соответствующие индексам (смещениям) элементов в списке, что бы мы могли с помощью этих индексов обращаться к элементам списка. Делается это следующим образом.
Python
1
2
n = "1,2,3,4,1,5,8,1".split(',')
print(list(range(len(n))))
# возвращает нужную нам последовательность
Python
1
[0, 1, 2, 3, 4, 5, 6, 7]
это индексы элементов из нашего списка.
Когда нам нужен список начинающийся с нуля (start = 0) и с шагом 1 (step = 1), то их указывать не надо, так как они берутся по умолчанию, а указывать только количество чисел, которое должно соответствовать количеству элементов в нашем списке, то есть len(n). То есть используется первая форма синтаксиса функции range
Python
1
range(stop) -> range
, то есть указывается только количество элементов в нашем списке.
В результате шапка будет выглядеть так.
Python
1
2
3
n = "1,2,3,4,1,5,8,1".split(',')
for i in range(len(n)):
    print(i)
Выводит
Python
1
2
3
4
5
6
7
8
0
1
2
3
4
5
6
7
То есть, на каждом шаге в переменную "i" у нас помещается индекс очередного элемента из нашего списка. С помощью этого индекса мы на каждом шаге можем работать с очередным элементом из нашего списка. Для данной задачи мы можем с помощью count() вычислять количество вхождений в список.
Но нам нужно сравнить количество вхождений для разных элементов списка и найти элемент с наибольшим количеством вхождений. Дальше можно решать задачу разными путями, но у тебя еще не достаточно знаний, что бы решать такие задачи оптимальным способом, например с сортировкой используя функции sorted() и lambda. Поэтому я и говорю, что тебе еще рано решать такие задачи.
Можно конечно перед циклом инициировать переменную maxNum = (0,0) и при каждом проходе помещать туда число из списка вместе с его количеством вхождений в список, если количество вхождений у этого числа больше чем в переменной maxNum . Если сможешь, то попробуй решить эту задачу таким способом, если нет, то оставь ты ее в покое и займись изучением материала дальше.
1
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
25.03.2020, 16:37  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Можно конечно перед циклом инициировать переменную maxNum = (0,0) и при каждом проходе помещать туда число из списка вместе с его количеством вхождений в список, если количество вхождений у этого числа больше чем в переменной maxNum . Если сможешь, то попробуй решить эту задачу таким способом, если нет, то оставь ты ее в покое и займись изучением материала дальше.
конечно не смогу...
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
25.03.2020, 18:55
Цитата Сообщение от coa3 Посмотреть сообщение
конечно не смогу...
Тогда продолжай изучать дальше. Для таких задач нужно использовать функции, а ты их еще даже не начинал изучать.

Добавлено через 2 часа 9 минут
coa3, Для информации выкладываю код решения данной задачи, использующий алгоритм который я предложил.
Python
1
2
3
4
5
6
7
8
9
10
n = "1,2,5,4,1,5,5,1,5".split(',')
numMax = (0, 0)
for i in range(len(n)):
    r = n.count(n[i])
    if r > numMax[1]:
        numMax = (n[i], r)
 
print('число', numMax[0], 'встречается', numMax[1], 'раз(а)') 
 
# число 5 встречается 4 раз(а)
1
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
25.03.2020, 22:42  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Для информации выкладываю код решения данной задачи, использующий алгоритм который я предложил
ну вот, до такого кода я бы не додумался, что бы от начала до конца написать...
вопрос, а если такой вход числе...?
1,2,5,4,1,1,5,5,1,5

Добавлено через 1 минуту
Цитата Сообщение от Viktorrus Посмотреть сообщение
Тогда продолжай изучать дальше. Для таких задач нужно использовать функции, а ты их еще даже не начинал изучать
сегодня перечитал материал по циклам думал может, что то упустил..
но убедился, что этого материала не достаточно, что бы решить ту задачу, ну по крайней мере у меня ума не хватает, что бы пазлы сложились
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
26.03.2020, 00:00
Цитата Сообщение от coa3 Посмотреть сообщение
Найти в списке число, которое встречается чаще всего.
Цитата Сообщение от coa3 Посмотреть сообщение
циклы ненавижу
Можно и без циклов :-)
Python
1
2
arr = "1,2,5,4,1,5,5,1,5".split(',')
max(arr,key=arr.count)
Но нужно понимать, что на больших списках любые такие упрощения (даже с тем же count в обычном цикле) работают примерно в 100-1000 раз медленнее алгоритмически правильных способов.
А для алгоритмически правильного способа понадобится аж два цикла while + сортировка (которую если реализовывать вручную, а не через встроенную функцию sorted, будет включать в себя еще два-три цикла).
Так что без циклов далеко не уедешь... если захочешь ехать быстро...
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
26.03.2020, 00:09
Цитата Сообщение от coa3 Посмотреть сообщение
но убедился, что этого материала не достаточно, что бы решить ту задачу
Я тебе про это и говорил, что ты берешься за задачи, для которых у тебя еще не достаточно знаний. Вот пройдешь главы посвященные инструкциям и функциям, тогда у тебя будет полностью пройдена теория посвященная процедурному программированию. И ты сможешь решать задачи которые в рамках процедурного программирования. Я тогда сам буду находить тебе задачи с этого форума, которые не выходят за рамки процедурного программирования. Затем когда изучишь часть посвященную модулям, можно будет уже использовать приемы модульного программирования. Не спеши хвататься за задачи. Примеров, которые дает Лутц, вполне достаточно, что бы разобраться с теорией. Нужно не просто их разбирать, но и изменять, при этом наблюдая как изменяются результаты работы этих примеров. Когда мне не понятна теория, я сам меняю предложенные примеры, что бы посмотреть, как они будут работать в разных случаях, и какой они будут выдавать результат, понятный мне или нет. Учись работать с примерами, в том числе создавая свои примеры, которые бы отвечали на вопросы, которые тебе не понятны.
Если же тебе в теории все понятно, но ты не можешь решить какую то задачу, значит просто у тебя еще не достаточно знаний для этой задачи. Не хватайся решать что попало. Я когда придет время сам буду давать тебе задачки.
1
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
26.03.2020, 23:45  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
А для алгоритмически правильного способа понадобится аж два цикла while
так в книгах Лутца везде пишут, что while вообще самый медленный т.к. он запускает байт код, а цикл for работает со скоростью скомпилированного кода "С" ...?
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
26.03.2020, 23:59
Разница между while и for, разумеется, есть.
Но
1) она не очень большая
2) есть задачи, где for не получится использовать (например, с ручным управляемым счетчиком - в for его нельзя изменить )
3) ускорение коду дает алгоритм, а не вид цикла.

Пример с for и count для нахождения числа с максим. числов вхождений работает в 1000 раз медленнее вот этого кода
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
def maxcount(arr):
    '''Поиск числа с максимальным количеством вхождений.
    На отсортированном ( O(N*log(N)) ) списке выполняется за O(N)
    
    In [1]: import random
    
    In [2]: arr = [random.randint(1,10000) for _ in range(10000)]
    
    In [3]: %timeit -n 10 -r 10 maxcount(arr)
    6.41 ms ± 176 µs per loop (mean ± std. dev. of 10 runs, 10 loops each
    '''
    
    arr = sorted(arr)
    len_a = len(arr)
    num, maxcnt, curr = arr[0], 0, 0
    while curr < len_a - 1:
        cnt = 1
        next_ = curr + 1
        # сравниваем последующие числа с текущим
        while next_ < len(arr):
            # пока числа равны - ведем подсчет
            if arr[next_] == arr[curr]:
                cnt += 1
                next_ +=1
            # иначе - другое число - прерываемся
            else:
                break
        #-------------------        
        # обновляем текущий максимум числа вхождений
        if cnt > maxcnt:
            maxcnt, num = cnt, arr[curr]
        # начинаем с первого a[next_] неравного текущему a[curr]
        curr = next_
    return num, maxcnt
просто потому, что тот код алгоритмически сложен (время работы - квадратично). А у этого кода время работы - N log N. То есть, если тот код делает миллион итераций на списке из 1000 чисел, код выше - всего 6000 итераций.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
27.03.2020, 03:44
coa3, Приведу цитату из Лутца.
"при написании кода Python производительность не должна быть вашей главной задачей; первое, что вы обязаны делать для оптимизации кода Python — не оптимизировать его! Пишите код изначально с акцентом на читабельности и простоте, а затем позже оптимизируйте, если и только если в этом есть необходимость."
Лутц М. Изучаем Python (том 1, 5-е издание, 2019) стр. 654.
Я с его мнением согласен. Кстати, в любой сфере деятельности сначала стараются получить результат используя черновой вариант. И только решив поставленную задачу (получив нужный результат), занимаются вопросами оптимизации, доводкой до конечного продукта. Конечно, обладая большими знаниями, профессионал может сразу создавать конечный (оптимизированный) продукт. Но это только в простых задачах В сложных (крупных) задачах, сначала создается макет, потом опытный образец (работающий), и только потом занимаются его доводкой и оптимизацией.
Я считаю, что на стадии изучения языка, не нужно забивать себе голову оптимизацией (достаточно беглого знакомства с вопросом оптимизации, которое дает Лутц). И только изучив язык и начав писать реальные программы, можно серьезно озаботится вопросами оптимизации, и то если только это понадобится на практике.
2
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
27.03.2020, 13:53
Цитата Сообщение от coa3 Посмотреть сообщение
так в книгах Лутца везде пишут, что while вообще самый медленный т.к. он запускает байт код, а цикл for работает со скоростью скомпилированного кода
Это вы неверно поняли. Он имел ввиду не сам цикл for, а его реализацию в виде list comprehension (это вот такая конструкция: [i for in range(100)] ).

Ну а если вы хотите что-то знать точно - никогда не нужно верить на слово: просто возьмите и проверьте.
1) list comprehension
Python
1
%timeit -n 10 -r 10 [i for i in range(1_000_000)]
Code
1
96.7 ms ± 2.35 ms per loop (mean ± std. dev. of 10 runs, 10 loops each)
2) Конструктор list
Python
1
%timeit -n 10 -r 10 list(i for i in range(1_000_000))
Code
1
152 ms ± 2.17 ms per loop (mean ± std. dev. of 10 runs, 10 loops each)
3) Обычный for
Python
1
2
3
4
def simplefor():
    arr = []
    for i in range(1_000_000):
        arr.append(i)
Python
1
%timeit -n 10 -r 10 simplefor()
Code
1
204 ms ± 2.88 ms per loop (mean ± std. dev. of 10 runs, 10 loops each)
4) Обычный while
Python
1
2
3
4
5
6
def simplewhile():
    arr = []
    i = 0
    while i < 1_000_000:
        arr.append(i)
        i+=1
Python
1
%timeit -n 10 -r 10 simplewhile()
Code
1
289 ms ± 1.49 ms per loop (mean ± std. dev. of 10 runs, 10 loops each)
Как видно, while действительно на1/3 медленнее for. Но это не настолько существенно, если учесть, что на небольших последовательностях разницы не будет, на больших - все будет решать алгоритм, а не цикл.
Ну а list comprehension на самом деле самая быстрая в Python конструкция для цикличекого обхода последовательностей.
Но и то - разница в три раза между list comprehension и while не покрывает разницы между правильным алгоритмом и наивным.
1
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
04.04.2020, 23:10  [ТС]
несколько дней ушло на утресение карантина введенного в крае..
в общем произошло, как я и думал, пока дойду сквозь множество страниц и букв книги, до первых упражнений на 490 страницы, забуду что было на прежних сотнях страниц и уже не помню, как выполнять эти упражнения..
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
05.04.2020, 01:41
coa3, Для этого нужно использовать книгу Лутца как справочник для материала, который ты уже прошел. Так же нужно пользоваться справочником в интернете, на который я давал ссылку, что бы смотреть синтаксис инструкций. А лучше всего вести свой справочник на какой либо программе, куда заносить вновь осваиваемые инструкции с синтаксисом и со своими пояснениями. Я веду такой справочник в СУБД базы данных, и без него как без рук, вообще не могу программировать. Потому, что в памяти всего не удержишь. Но пройдя изучение я знаю, где искать нужные мне инструкции с их синтаксисом.
Я не представляю, какую нужно иметь финоминальную память, что бы помнить все наизусть.
Обычный режим программирования, это со справочником под рукой, и лучше электронным, что бы быстро находить нужный материал.
Просто чем больше будешь набираться опыта, тем быстрее будешь находить в справочнике нужные команды. И не надейся, что ты быстро начнешь программировать не используя справочный материал, и не заглядывая в Лутца, в те места, которые ты уже изучил.

Добавлено через 8 минут
coa3, Зачем тебе упражнения? Пока достаточно примеров, для того, что бы самостоятельно меняя их разбираться со всем, что тебе не понятно. На начальном этапе достаточно упражнений, которые даются в конце каждой части книги. Когда закончишь изучение функций, тогда можно будет брать задания из других источников. Тогда и я буду подкидывать тебе задания с этого форума, которые ты уже сможешь решать. Пока же тебе рано, не гони лошадей, ты ведь даже еще не знаешь функции.

Добавлено через 7 минут
А не зная функции ты даже не можешь правильно понять смысл синтаксиса инструкций, например именованные аргументы. Да без знания функций многое в полноценном коде не поймешь.

Добавлено через 14 минут
Я начал программировать самостоятельно, только когда полностью изучил книгу
Лутц М. Изучаем Python (4-е издание, 2011)
и первую главу из книги
Лутц М. Программирование на Python. Том 1 (4-е издание, 2011)
Именно первая глава книги по программированию, дала мне понимание, как нужно программировать.
И только после нее, я начал писать программы самостоятельно.
Но она базируется на первой книге "Изучаем Python", и читать ее не изучив первую книгу, бесполезно.

Добавлено через 10 минут
coa3, В общем продолжай изучать дальше и что не понятно из текста, то сразу спрашивай. Если проявишь терпение, то после изучения функций с нашей помощью начнешь понемногу набираться практики для самостоятельного программирования. Сейчас у тебя запас знаний для самостоятельного программирования еще не достаточный. Именно по этой причине Лутц не дает упражнений в начальных главах, а только примеры по ходу изложения материала.
0
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
05.04.2020, 18:36  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Именно по этой причине Лутц не дает упражнений в начальных главах, а только примеры по ходу изложения материала.
так а упражнение на стр. 490 (Проверьте свои знания: упражнения для части III) пропустить и читать дальше?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
05.04.2020, 21:15
Цитата Сообщение от coa3 Посмотреть сообщение
так а упражнение на стр. 490 (Проверьте свои знания: упражнения для части III) пропустить и читать дальше?
Все, что дает Лутц нужно делать. Я говорю о другом, не нужно делать упражнения из других источников, так как нельзя гарантировать, что эти упражнения соответствуют объему твоих знаний на том этапе обучения, на котором ты находишься изучая Лутца.
Поэтому задания из других источников могут приводить к таким эмоциональным срывам как у тебя. А причина всего лишь в том, что у тебя еще не достаточный объем знаний, что бы делать такие задания, которые ты берешь со стороны.
Что касается упражнений, которые дает Лутц, то ничего страшного, если ты не сможешь их сделать самостоятельно. При затруднениях обращайся сюда и мы их разберем.
Любые упражнения, которые ты если даже не сделал сам, но понял после их разбора, добавляют тебе опыта, который со временем позволит тебе начать писать программы самому.
Пойми на конец такую вещь, что бы начать программировать самому, нужно пройти полный курс обучения.
А пока разбирайся только с теми примерами и упражнениями, которые дает тебе Лутц. И он не зря дает решения в приложении, потому, что предполагается, что ты и не решишь их сам, но должен понять решение, хотя бы и с предоставленным решением в конце книги.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
06.04.2020, 13:03
coa3, Вот еще что. Так как тобой пока пропущены несколько глав углубленного изучения строк , списков, словарей и т.д. ( вернешься к ним после изучения функций), то в упражнениях или примерах могут встречаться случаи, требующие знания из пропущенных глав. В таких случаях или сам находи нужную информацию в пропущенных главах, используя их как справочник или спрашивай здесь, я объясню.
Так как в упражнениях на стр.490 так же требуются знания из пропущенных глав, то поступим следующим образом.
Ты выкладываешь здесь очередное упражнение, и я даю информацию из пропущенных глав, которая нужна для решения этого упражнения. После этого ты пробуешь решить это упражнение.

Добавлено через 1 час 5 минут
coa3, Что бы не затягивать, выкладываю сам первое упражнение и даю дополнительную информацию для его решения.
1. Написание базовых циклов. В данном упражнении предлагается поэкспериментировать с циклами for.
а) Напишите цикл for, который выводит код ASCII каждого символа в строке по имени S.
Для преобразования символа в целочисленный код ASCII используйте встроенную функцию ord(символ).
Формально функция ord в Python З.Х возвращает кодовую точку Unicode,
но если вы ограничите содержимое строки символами ASCII, то будете получать обратно коды ASCII.
(Опробуйте ее интерактивно, чтобы посмотреть, как она работает.)

Не по теме:


Для начала, пользуясь случаем, расскажу о кодировке.
Компьютер может оперировать только двумя состояниями сигнала, сигнала нет (на самом деле маленький) - сигнал есть. Эти состояния обозначают нулем "0" и единицей "1". То есть компьютер может оперировать только двумя цифрами. Отсюда появилась потребность в двоичном счислении. Один сигнал, (0 или 1) называется битом. Что бы за раз передавать больше информации в первых компьютерах использовали 8 каналов (проводов) и передавали за раз 8 бит. Такую порцию бит назвали байтом.
Так как систему создавали американцы, они позаботились в первую очередь о себе, и использовали различные сочетания 0 и 1 в байте для установления соответствия с буквами английского алфавита. Такая кодировка называется ASCII. Для добавления букв из других языков 8 бит (байта) уже не достаточно. Например, что бы добавить кириллицу понадобилось добавить еще один байт, то есть используется уже 16 битов.
На сегодняшний день разработан универсальный алгоритм кодирования Unicode, который предусматривает возможность кодирования всех существующих в мире языков и даже включая древние языки (например язык племени майя).
Этому алгоритму соответствует и кодировка кириллицы utf-8, использующая 16 бит. Кодировка ASCII так же соответствует алгоритму кодирования Unicode и использует 8 бит.
Подробно о Unicode можно прочитать в Википедии
https://ru.wikipedia.org/wiki/... 0%BE%D0%B4
У Лутца глава о кодировках находится в томе 2. И тебе пока читать ее рано.


Исходя из выше сказанного следует, что в упражнении строка должна состоять только из английских букв (закодированных в ASCII)
Для решения данной задачи используй функцию ord().
Python
1
2
3
4
5
6
7
8
 ord(chr) -> int 
 
chr - строка из одного символа
 
int - числовое представление для указанного символа
 
пример:
ord('a')       # 97
Функция выводит число в десятичном виде, преобразуя его из двоичного числа в байте, которое соответствует заданному символу.

Добавлено через 7 минут
coa3, Еще раз поясню, как работает цикл for.
Пусть у вас список L из 100 чисел и Вам нужно каждое число возвести в куб. Вы будете писать код состоящий из ста строк ?
1**3
2**3
3**3
4**3
5**3
и так далее.
Не употеете?
Во-первых, что бы упростит написание кода, нам нужен механизм, что бы брать по одному элементу из списка.
В цикле for это обеспечивает шапка цикла
for i in L:
На каждом шаге в переменную цикла i цикл for последовательно помещает по одному элементу из списка L.
И на этом шаге в теле цикла выполняются некоторые действия с этим элементом.
В нашей задаче элемент (число) возводится в куб
x = i**3
и затем помещается в новый список
L3.append(x)
И так последовательно делается для всех элементов списка. Когда цикл пройдет по всем элементам, он автоматически прекратит работу и передаст управление инструкции, идущей за циклом.
То есть цикл for последовательно для каждого элемента из списка выполняет одни и те же действия, расположенные в теле цикла.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
07.04.2020, 11:38
coa3, По поводу Unicode в питоне требуется уточнение. В питоне рассматриваются понятия, 8 битная кодировка (просто байт), 16 битная кодировка (обозначается с помощью символа x , экранированная запись \xhhh , шестнадцатеричное число 0xhhh), и 32 битная кодировка (обозначаемая символом u, экранированная запись \uhhhh). 32 битную кодировку называют в питоне кодировкой unicode, хотя все эти кодировки соответствуют стандарту кодирования Unicode. Из за токого подхода у некоторых программистов возникает не понимание, что такое Unicode.
Итак Unicode - это стандарт, который устанавливает требования к созданию современных кодировок. Они могут быть 8, 16 и 32 битные. В питоне же unicode называют 32 разрядную кодировку используемую внутри питона.
0
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
08.04.2020, 12:42  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Пусть у вас список L из 100 чисел и Вам нужно каждое число возвести в куб. Вы будете писать код состоящий из ста строк ?
Python
1
2
3
4
5
L = []
for i in range(101):
    n = i ** 3
    L.append(n)
print(L)
Добавлено через 16 минут
Цитата Сообщение от Viktorrus Посмотреть сообщение
а) Напишите цикл for, который выводит код ASCII каждого символа в строке по имени S.
Python
1
2
3
4
5
z = ord('b')
S = []
for i in range(z):
    S.append(i)
print(S)
ну так выведем просто диапазон чисел кода конкретного символа, а как вывести код каждого символа строки не знаю..
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
08.04.2020, 17:12
Цитата Сообщение от coa3 Посмотреть сообщение
for i in range(101):
Здесь у тебя не 100, а 101 число (0, 1, 2, 3, ... 99, 100).
100 чисел даст range(100) -> (0, 1, 2, ... 99)
Если нужны числа от 1 до 100 то будет так
range(1, 101) -> (1, 2, 3, ... 99, 100)

coa3, по поводу второго упражнения, у меня было сомнение, что у Лутца не четко дано понятие, что такое S. Возможно корявый перевод.
Под S в этом упражнении подразумевается не строка, которая будет на выходе, а исходная строка, которую нужно обработать.
Возьми какое нибудь английское слово, это и будет строка S. Затем напиши код, который выведет список чисел, которые являются кодами для букв в заданном тобой английском слове, то есть взятых из строки S.
Попробуй еще раз написать код для этого упражнения.
Как правило почти любое упражнение в питоне можно решать разными способами. Здесь нужно вывести на экран коды.
Это можно сделать сформировав список L этих кодов, и затем распечатать этот список после завершения цикла.
А можно просто на каждом шаге цикла печатать код очередного символа, разместив print() внутри тела цикла.
Напиши коды для обоих вариантов решения.

Добавлено через 7 минут
coa3, Да, и кстати. Ты дошел до этих упражнений на стр. 489-490 ? Тогда по одному здесь выкладывай и будем их разбирать. Если же ты до них еще не дошел, то пока подожди их решать, так как ты мог еще не изучить весь материал, который требуется для решения этих упражнений.
1
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
08.04.2020, 22:47  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Да, и кстати. Ты дошел до этих упражнений на стр. 489-490 ?
да дошел, на 500 странице сейчас
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
10.04.2020, 18:00
coa3, Освежил в памяти информацию о кодировке по стандарту Unicode. Оказывается я в комментарии выше не совсем правильно рассказал про этот стандарт. Подробная информация про стандарт Unicode и про кодировку utf-8 в Википедии по ссылкам
https://ru.wikipedia.org/wiki/... 0%BE%D0%B4
https://ru.wikipedia.org/wiki/UTF-8
Кликните здесь для просмотра всего текста
И так вкратце суть вопроса.
Стандартом Unicode всем возможным символам, которые могут использоваться, поставлены в соответствие целые числа. То есть создана таблица, где всем мыслимым символам поставлены в соответствия конкретные числа (числа обычно выражаются в шестнадцатеричной форме, но могут выражаться и в десятичной, это не имеет значения). В этом же стандарте определены ряд конкретных кодировок, то есть способы размещения в компьютере этих чисел в двоичном формате в виде нулей 0 и единиц 1.
Количество символов в таблице стандарта Unicode огромно и для того, что бы записать любое число в двоичном коде с помощью нулей 0 и единиц 1, даже двух байт (16 бит) может оказаться не достаточно. Поэтому для разных диапазонов символов могут использоваться разные кодировки, 8 бит, 16 бит, 32 бита, то есть 1 байт, 2 байта или 4 байта. Отсюда в Unicode определены такие кодировки 8-bit, 16-bit, 32-bit. Но в стандарте Unicode определен такой универсальный код utf-8, который любое число (для соответствующего символа) размещает в таком количестве байтов, которое для него достаточно. То есть каждому символу может соответствовать количество байт из диапазона от 1 до 4. Такая кодировка медленнее чем кодировка с фиксированным количеством байт, но значительно компактнее (то есть занимает значительно меньше места). Кодировка utf-8 сейчас является преобладающей в мире.
А теперь несколько выдержек из Википедии.
Юнико́д[1] (чаще всего) или Унико́д[2] (англ. Unicode) — стандарт кодирования символов, включающий в себя знаки почти всех письменных языков мира[3]. В настоящее время стандарт является преобладающим в Интернете.

Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (англ. Unicode Consortium, Unicode Inc.)[4][5]. Применение этого стандарта позволяет закодировать очень большое число символов из разных систем письменности: в документах, закодированных по стандарту Юникод, могут соседствовать китайские иероглифы, математические символы, буквы греческого алфавита, латиницы и кириллицы, символы музыкальной нотной нотации.
Стандарт состоит из двух основных частей: универсального набора символов (англ. Universal character set, UCS) и семейства кодировок (англ. Unicode transformation format, UTF). Универсальный набор символов перечисляет допустимые по стандарту Юникод символы и присваивает каждому символу код в виде неотрицательного целого числа, записываемого обычно в шестнадцатеричной форме с префиксом U+, например, U+040F. Семейство кодировок определяет способы преобразования кодов символов для передачи в потоке или в файле.
UTF-8 от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-бит») — распространённый стандарт кодирования символов, позволяющий более компактно хранить и передавать символы Юникода, используя переменное количество байт (от 1 до 4), и обеспечивающий полную обратную совместимость с 7-битной кодировкой ASCII. Стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO/IEC 10646 Annex D. Кодировка UTF-8 сейчас является доминирующей в веб-пространстве. Она также нашла широкое применение в UNIX-подобных операционных системах[1]. Формат UTF-8 был разработан 2 сентября 1992 года Кеном Томпсоном и Робом Пайком, и реализован в Plan 9[2]. Идентификатор кодировки в Windows – 65001[3].

UTF-8, по сравнению с UTF-16, наибольший выигрыш в компактности даёт для текстов на латинице, поскольку латинские буквы без диакритических знаков, цифры и наиболее распространённые знаки препинания кодируются в UTF-8 лишь одним байтом, и коды этих символов соответствуют их кодам в ASCII.[4][5]

Буквы современного русского алфавита расположены в диапазоне
U+0401 - U+044F шестнадцатеричный формат
1025 - 1103 десятичный формат
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2020, 18:00

Определите значение второго по величине элемента в последовательности
Последовательность состоит из различных натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой...

Определите значение второго по величине элемента в последовательности
Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой...

Определите значение второго по величине элемента в этой последовательности
Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой...

(использовать рекурсию) Определите значение второго по величине элемента в этой последовательности
3. (использовать рекурсию) Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 0. Определите значение...

Определите значение второго по величине элемента последовательности рекурсией без циклов
Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 0. Определите значение второго по величине ...


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

Или воспользуйтесь поиском по форуму:
160
Закрытая тема Создать тему
Новые блоги и статьи
Мир по моей воле
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
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru