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

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

17.04.2020, 12:37. Показов 9165. Ответов 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
8484 / 6151 / 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
8484 / 6151 / 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
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
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
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.04.2020, 23:17
Ну я бы предпочел генератор списка map-у
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 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
8484 / 6151 / 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru