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

Изучаем Python по книге Лутца

17.04.2020, 12:37. Показов 9359. Ответов 87
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
на 490 стр 5 того издания 1 части Лутца встречаются первые задания по практики...
1. Написание базовых циклов. В данном упражнении предлагается поэкспериментировать с циклами for.
а) Напишите цикл for, который выводит код ASCII каждого символа в строке по
имени S. Для преобразования символа в целочисленный код ASCII используйте встроенную функцию ord (символ). Формально функция ord в Python З.Х
возвращает кодовую точку Unicode, но если вы ограничите содержимое строки символами ASCII, то будете получать обратно коды ASCIL (Опробуйте ее
интерактивно, чтобы посмотреть, как она работает.)
Python
1
2
3
4
s = 'spam'
for i in s:
    v = ord(i)
    print(v, end=' ')
б) Далее измените цикл для вычисления суммы кодов ASCII всех символов в строке.

здесь что то пошло не так..
Python
1
2
3
4
5
s = 'spam'
for i in s:
    v = ord(i)
    print(v, end=' ')
print(sum(v))
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2020, 12:37
Ответы с готовыми решениями:

Объясните текст из книги Лутца "Изучаем python"
В книге написано: В текущей реализации python это ещё и программный пакет который называется интерпретатором. Интерпретатор - это такой...

М. Лутц Изучаем Python. Том 1
Добрый день! Заказал по ошибке 2 книги (5 издание, 1 том) с ozon (...

Лутц Марк - Изучаем Python. 5 издание
Как ориентироваться в исходниках? https://www.oreilly.com/library/view/learning-python-5th/9781449355722/ ...

87
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.04.2020, 12:51
Лучший ответ Сообщение было отмечено Рыжий Лис как решение

Решение

Python
1
2
3
4
5
s = 'spam'
sum_ = 0
for i in s:
    sum_ += ord(i)
print(sum_)
Или

Python
1
2
3
4
5
s = 'spam'
v = []
for i in s:
     v.append(ord(i))
print(sum(v))
2
2 / 2 / 0
Регистрация: 17.04.2020
Сообщений: 15
17.04.2020, 12:56
переменная v не является типом integer, а значит сумма не возможна
Пробуй так:
Python
1
2
3
4
5
6
7
8
s = 'spam'
z = 0
for i in s:
    v = ord(i)
    z+=int(v)
    print(v, end=' ')
print(v)
print(z)
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.04.2020, 13:29
Цитата Сообщение от Nitromag Посмотреть сообщение
переменная v не является типом integer
Почему?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.04.2020, 13:31
Если хочется в одну строчку можно так:

Python
1
2
3
4
5
6
7
from functools import reduce  
 
s = 'spam'
 
sum_ = reduce(lambda a,b:(ord(a) if type(a) is str else a) +ord(b),s)
 
print(sum_)
1
5517 / 2870 / 571
Регистрация: 07.11.2019
Сообщений: 4,761
17.04.2020, 15:35
Avazart, если уж без for, то можно и так:
Python
1
2
s = 'spam'
print(sum(map(lambda x: ord(x), s)))
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.04.2020, 23:05
Или даже так (лямбда не нужна раз у нас один аргумент)
Python
1
2
3
4
>>> s = 'spam'
>>> sum(map(ord, s))
433
>>>
Типичная композиция функций a-la Haskell. Только там это выглядело бы так:
Haskell
1
2
3
Prelude> let s = "spam";
Prelude> sum $ map ord s
433
И все эти функции нужно было еще и импортировать, так как они не builtins. Не все - только ord.
2
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.04.2020, 23:17
Ну я бы предпочел генератор списка map-у
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
18.04.2020, 07:30
Цитата Сообщение от Nitromag Посмотреть сообщение
переменная v не является типом integer,
Является:
Python
1
v = ord(i)
ord(c, /)
Return the Unicode code point for a one-character string.
Цитата Сообщение от Avazart Посмотреть сообщение
Ну я бы предпочел генератор списка map-у
Python
1
2
3
>>> s = 'spam'
>>> sum(ord(i) for i in s)
433
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
18.04.2020, 14:39
coa3, Тебе дали различные варианты правильного решения. Но ты понял почему у тебя не правильно?
У тебя та же ошибка, когда ты пытался печатать v за пределами цикла не собрав все вычисленные в цикле значения v. В результате получал в ответе только одно значение кода последней буквы. На каждом шаге цикла переменная v у тебя имеет значение кода только одной буквы, текущей для данного шага цикла. Для того, что бы получить сумму кодов всех символов из строки, тебе нужно или собрать все эти коды в список и потом просуммировать элементы списка или прибавлять каждый вновь получаемый код к значению некоторой заранее созданной (перед циклом) переменной.
Тебе были показаны и тот и другой варианты. Разбираться ли в более компактных но и в более сложных вариантах, это решай сам. Ведь ты пока пропустил главы "строки" и "списки" (к которым вернешься после изучения функций) , поэтому не думаю, что ты поймешь компактные решения. Я так же не знаю, изучал ли ты уже функцию lambda.
Поэтому тебе пока достаточно понять варианты, которые тебе первоначально предложил Avazart,

Добавлено через 7 минут
coa3, По поводу главы "Аргументы". Очень важная глава для понимания работы с функциями. И важная для того, что бы был понятен синтаксис функций. В этой главе, есть сложные для понимания моменты, с которыми я не сразу разобрался. Поэтому все, что тебе не понятно, спрашивай.
В главе "Аргументы" есть тонкости, которые, если ты их не поймешь, то возможно пока можно будет их и пропустить, но прежде спрашивай, важно ли понять их уже сейчас. А то может получится что ты без этих моментов не сможешь изучать материал дальше, так как они используются постоянно, а не в исключительных случаях.

Добавлено через 20 минут
coa3, Извини, я перепутал. Стр 526 это глава "Области видимости". Тоже важная глава. У некоторых с областями видимости путаница. Что не понятно, спрашивай.

Добавлено через 1 час 12 минут
coa3, Пробежался бегло по главе "Области видимости", там есть от чего "крыше поехать". Не старайся усвоить все, что дается в этой главе. Достаточно понять главное.
В 4-ом издании по моему понятнее изложено.
Итак главное.
Области видимости для конкретного места (точки) в программе, это области:
1) Область внутри функции (содержащей данную точку программы) и созданные внутри функции переменные.
2) Область внутри объемлющей функции (функция вызвавшая данную функцию которую мы в текущий момент рассматриваем) и созданные внутри объемлющей функции переменные.
3) Область внутри модуля и созданные внутри модуля (на верхнем уровне) переменные (не входящие в локальные области расположенные внутри функций данного модуля).
4) Область переменных встроенная в питон (встроенные переменные существующие в самом интерпретаторе, вне пользовательского кода)
Итак внутри функции мы видим переменные из всех этих областей и можем читать (не писать) их значения по следующему правилу. Мы ищем переменную с данным именем по порядку просматривая области начиная с первой из списка выше и до последней. Но считываем значение из первой попавшейся переменной из этих областей видимости. После этого поиск переменной прекращается и переменные с таким именем в области выше уже не рассматриваются.
Существует правило LEGB порядка поиска имен в областях видимости:
L - локальная
E - объемлющая
G - глобальная
B - встроенная
Но это правило только для чтения значений переменных. Для возможности записи нужно разбираться с пространством имен. Это рассмотрим позже.
3
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
20.04.2020, 21:18  [ТС]
начиная со страницы 526, начинаются просто вообще непонятные заморочки...
Цитата Сообщение от Viktorrus Посмотреть сообщение
Что не понятно, спрашивай.
по рекурсии недопонимания и вообще реально нужна она или почти не применяется...?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
20.04.2020, 21:28
Цитата Сообщение от coa3 Посмотреть сообщение
вообще реально нужна она
На вашем этапе программирования она вряд ли скоро понадобится. Разве что для решения учебных задач, которые легко решаются итеративно, но для упражнения задается именно рекурсивное решение.
Хотя, понимать ее, конечно, стоит. В Python она используется в основном для обхода структур типа деревьев, графов, ну или просто неглубоко вложенных списков. Неглубоко потому что в Python есть ограничения на глубину рекурсии, лимит этот можно увеличить, но только за счет использования доп. памяти, которую будет жрать программа.
1
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.04.2020, 22:01
Цитата Сообщение от coa3 Посмотреть сообщение
по рекурсии недопонимания и вообще реально нужна она или почти не применяется...?
Конечно применяется.

Пример - рекурсивный обход каталога с файлами.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
20.04.2020, 23:24
Цитата Сообщение от coa3 Посмотреть сообщение
по рекурсии недопонимания и вообще реально нужна она или почти не применяется...?
Бывают, хотя и не часто, задачи, в которых без рекурсии трудно придумать решение.
Поэтому знать, как работать с рекурсией, нужно.
Смысл у рекурсии простой, это когда функция в своем теле вызывает саму себя и происходит зацикливание. Умение писать рекурсию заключается в умении писать выход из рекурсии в нужный момент, что бы она не превращалась в бесконечный цикл. Какой то схемы выхода я сейчас назвать не могу, нужно смотреть на примерах. То есть в какой то момент, по условию, она должна прекратить вызывать себя.
Если ты дошел до темы рекурсии, напиши на какой странице и выложи здесь какой пример из учебника тебе не понятен.

Добавлено через 26 минут
coa3, Можно еще объяснить рекурсию так. Разберем, как работает логика выполнения питоном кода. Идет чтение команд по строчкам, начиная сначала кода и по порядку. Если встречается строка , где определяется функция
def func(arg, ...): то питон создает объект этой функции и размещает этот объект в памяти, затем создает переменную func, являющуюся названием этой функции, и размещает в ней указатель на созданный в памяти объект-функцию. Затем питон читает по порядку следующие за телом функции команды и выполняет их. Если попадается команда, которая вызывает функцию то питон переходит на строку, где шапка функции и по очереди выполняет команды из тела функции. Если в теле функции питон попадает на команду, которая вызывает саму эту функцию, то он возвращается на начало функции. Таким образом получается петля, и она работает до тех пор, пока мы по какому то условию уже не попадем в теле функции на строку, вызывающую саму эту функцию. Вот как то так. Выложи не понятный тебе пример и мы по шагам разберем его работу.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
24.04.2020, 01:25
coa3, Я пролистал главу "Области видимости" 5-го издания, и убедился, что Лутц еще в большей степени, чем в 4-ом издании позиционирует книгу как подробный справочник. В изложении конкретного материала он говорит с позиции использования всего объема знаний по данному вопросу, включая материал, который только еще будет изучаться в дальнейшем. Это оправдано для справочника, которым пользуется человек, который уже прошел весь курс обучения, и ему нужно освежить в памяти какую то конкретную тему. Но начинающего это вводит в ступор, так как он сталкивается с понятиями, которые он только будет изучать в будущем, и на данном этапе они для него не понятны.
Поэтому советую, встречаясь с упоминанием понятий, которые ты еще не изучал, этот материал пропускать и двигаться дальше. И главное не отчаиваться, понимая, что ты пока не все, что дается в данной главе можешь усвоить.
Я выше написал, что главное нужно понять в теме об областях видимости, это правило LEGB. Кроме этого еще постарайся понять, что такое глобальные переменные и переменные nonlocal. А остальное, что не поймешь, можешь пока пропустить, особенно то, что связано с классами.
И переходи к главе "Аргументы".
1
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
25.04.2020, 23:19  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Я выше написал, что главное нужно понять в теме об областях видимости, это правило LEGB. Кроме этого еще постарайся понять, что такое глобальные переменные и переменные nonlocal.
это самое легкое из этой темы
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
26.04.2020, 12:15
Цитата Сообщение от coa3 Посмотреть сообщение
это самое легкое из этой темы
А больше здесь пока ничего и не нужно знать. Если изучать только то, что нужно на данном этапе, то все и не так уж сложно.
Переходи к изучению главы "Аргументы".
Там среди нужного есть и сложное.
0
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
27.04.2020, 15:26  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
А больше здесь пока ничего и не нужно знать
5. Что выведет следующий код и почему?
»> X = ’ Spam ’
»> def func () :
X = ’N1’
def nested () :
print(X)
nested ()
»> func()
»> X
ответ: В данном случае выводится снова ’N1 ’ в одной строке и ' Spam’ в другой, потому что оператор print во вложенной функции находит имя в локальной области
видимости объемлющей функции, а отображение в конце находит переменную
в глобальной области видимости.


по моему ответу должно быть только ’N1 ’ выводится, почему второе слово выводится, если в вопросе нет команды принт этого слова?..
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
27.04.2020, 16:49
Цитата Сообщение от coa3 Посмотреть сообщение
почему второе слово выводится, если в вопросе нет команды принт этого слова?..
Нужно различать режим выполнения кода запуском файла и интерактивный режим.
В интерактивном режиме если мы указываем переменную и нажимаем Enter, то на экран выводится значение переменной (или выражения) без наличия инструкции print. Если же мы запускаем питоновский файл с кодом, то для того, что бы вывести на экран, нужно обязательно использовать инструкцию print.
Если бы ты ввел этот код в файл, как он здесь, то значение X на экран не будет выводить. И вообще указание переменной, без каких либо действий с ней будет воспринято как ошибка кода.

Добавлено через 3 минуты
И вообще у тебя код без отступов. Ты его ввел без тегов "[PYTHON]"?

Добавлено через 2 минуты
coa3, Выложи правильно код или укажи страницу, что бы я мог тебе объяснить его работу.
0
1 / 1 / 0
Регистрация: 27.02.2020
Сообщений: 101
27.04.2020, 17:23  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Выложи правильно код или укажи страницу, что бы я мог тебе объяснить его работу.
539 стр

Добавлено через 5 минут
к стати как вот этот код засунуть в функцию?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
n = int(input())
i = 0
for i in range(n):
    print('+___', sep='', end=' ')
print()
 
for i in range(n):
    print('|', i + 1, ' /', sep='', end=' ')
print()
 
for i in range(n):
    print('|', "__", '\\', sep='', end=' ')
print()
 
for i in range(n):
    print('|   ', sep='', end=' ')
print()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.04.2020, 17:23
Помогаю со студенческими работами здесь

Не работает код Эрик Матиз - Изучаем Python, упражнение 19.1
Здравствуйте Помогите пожалуйста с решением задачи 19.1 из книги Эрика Матиза - Изучаем Python Блог: создайте новый проект Django...

Изучаем С++ по книге Майкла Доусона
Всем привет, недавно начал изучать C++ и начал я с книги (Майкл Доусон - Изучаем С++ через программирование игр) по мере прочтения и...

Исходники к книге Дэвида Гриффитса - Изучаем программирование на с
Может есть у кого-нибудь хоть какие-нибудь???

Обучение программированию по книге "Изучаем С#"
Я ничего не знал о С# и почемуто купил книгу "Изучаем С#" (3-е издание 2014) Эндрю Стиллмен и Дженифер Грин дочитал до 350 страницы и...

Проект на PyGame из книги «Изучаем Python. Программирование игр, визуализация данных, веб-приложения», Мэтиза
Пишу первый проект на Питоне, никак не могу разобрать как исправить ошибку. Код переписывать (перекопировать с учебника) уже пытался.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru