Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОбсуждУпр8_Python зачет.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
138.42 Кб
Скачать

Глава 5. Обсуждения

  1. Заданы начальные операторы s1=”spam” s2=”ni!” Найти результат вычисления следующих выражений

    1. “The Knights who say, ” + s2

    2. 3*s1 + 2*s2

    3. s1[1]

    4. s1[1:3]

    5. s1[2] + s2[-1]

    6. s1+s2[-1]

    7. s1.upper()

    8. s2.upper().ljust(4)*3

  2. С теми же начальными операторами что и в предыдущей задаче, найдите выражения на языке Python, которые выдают следующие результаты, выполняя операции над цепочками s1 и s2:

    1. “NI”

    2. “ni!spamni!”

    3. “Spam Ni! Spam Ni! Spam Ni!”

    4. “spam”

    5. [“sp”, “m”]

    6. “spm”

  3. Найдите результат выполнения следующих программных фрагментов:

    1. for ch in “aardvark”: print(ch)

    2. for w in “Now is the winter of our discontent…”.split(): print(w)

    3. for w in ‘Mississippi’.split(‘i’): print(w, end=” “)

    4. msg=”” for ch in “secret”: msg=msg+chr(ord(ch)+1) print(msg).

  4. Найти цепочки символов, которые будут результатом выполнения следующих операций форматирования. Если операция ошибочна, то объясните почему.

    1. “Looks like {1} and {0} for breakfast”.format(“eggs”, “spam”)

    2. “There is {0} {1} {2} {3}”.format(1, “spam”, 4, “you”)

    3. “Hello {0}”.format(“Susan”, “Computewell”)

    4. “{0:0.2f} {0:0.2f}”.format(2.3, 2.3468)

    5. “{7.5f} {7.5f}”.format(2.3, 2.3468)

    6. “Time left {0:02}:{1:05.2f}”.format(1, 37.374)

    7. “{1:3}”.format(“14”).

  5. Объясните, почему шифрование с открытым ключом более полезно в Интернете, чем симметричное шифрование

Глава 5. Упражнения

  1. Как обсуждалось в главе форматирование цепочек можно использовать для упрощения программы dateconvert2Rus.py. Переделайте программу, воспользуйтесь методами форматирования цепочек символов.

  2. Преподаватель информатики задаёт 5-бальные задачи и выставляет за них буквенные оценки по следующему закону: 5-A, 4-B, 3-C, 2-D, 1-F, 0-F. Напишите программу, которая численную оценку, а выдаёт буквенную

  3. Профессор информатики проводит 100-бальный экзамен и выставляет буквенные оценки согласно следующей таблице

90-100

A

80-89

B

70-79

C

60-69

D

<60

F

Напишите программу, которая по численной оценке выдаёт буквенную.

  1. Акроним это слово, которое получается взятием первой буквы из слов в словосочетании. Напишите программу, которая заданному словосочетанию сопоставляет соответствующий акроним. Учтите, что в акрониме все буквы заглавные.

  2. Нумерологи претендуют на то, что способны определить персональные черты, основываясь только на «численном значении» имени. Численное значение имени получается с помощью суммирования численных значений всех букв фамилии (имени), «а» заменяется на 1, «б» на 2, «в» на 3 и т.д. Напишите программу, которая вычисляет численное значение введённого слова.

  3. Обобщите предыдущую задачу так, чтобы можно было вычислять численное значение фамилии-имени, фамилии-имени-отчества.

  4. Шифр Цезаря это простой подстановочный шифр, основанный на фиксированном сдвиге каждой буквы алфавита. Первоначальное значение сообщения восстанавливается с помощью кодирования с обратным ключом. Напишите программу, которая кодирует и декодирует сообщения по принципу шифров Цезаря. В программу вводится значение ключа и простой текст. Программа должна выдавать цепочку символов в кодировке Unicode’е согласно следующему правилу chchr(ord(ch)+key).

  5. Одним из недостатков предыдущего шифра является то, что в шифровке могут быть не только буквы. Предполагая, что текст состоит только из букв и пробелов (пробелы остаются на месте), составьте программу шифра Цезаря, которая не выходит за пределы букв.

  6. Напишите программу, которая считает количество слов в предложении, введённом пользователем.

  7. Напишите программу, которая считает среднюю длину слов в предложении, введённом пользователем.

  8. Напишите улучшенную версию программы chaos.py из главы, которая позволяет пользователю вводить два начальных значения и число итераций, а затем печатает хорошо отформатированную таблицу значений итераций. Например, для значений 0.25 и 0.26 и 10 итераций результат должен выглядеть так:

номер

0.25

0.26

01

0.731250

0.750360

02

0.766441

0.730547

03

0.698135

0.767707

04

0.821896

0.695499

05

0.570894

0.825942

06

0.955399

0.560671

07

0.166187

0.960644

08

0.540418

0.147477

09

0.968629

0.490255

10

0.118509

0.944630

  1. Напишите улучшенную версию программы «Будущее значение» из главы 02. Ваша программа попросит пользователя ввести величину инвестиции, годовую процентную ставку и количество лет. Программа должна выдавать данные о росте величины вклада по годам в виде хорошо отформатированной таблицы примерно следующего вида:

Год

Значение

0

2000.00 руб.

1

2200.00 руб.

2

2420.00 руб.

3

2662.00 руб.

4

2928.20 руб.

5

3221.02 руб.

6

3542.12 руб.

7

3897.43 руб.

  1. Переведите все предыдущие программы в пакетный режим, так, чтобы ввод и вывод данных осуществлялся с помощью файлов.

  2. Подсчет слов. Стандартная утилита для этого на системах Unix/Linux называется wc. Эта программа анализирует файл для того, чтобы определить число строк, слов и символов, содержащихся в файле. Напишите свою версию программы wc. Программа должна принимать имя файла, после чего печатать три числа, показывающих число строк, слов и символов в файле.

  3. Напишите программу, которая чертит диаграмму экзаменационных оценок студентов в виде горизонтальных полосок. Программа должна получать данные из файла. Первая строка файла должна содержать число студентов в файле, а каждая следующая строка – фамилию студента и его оценку из отрезка [0, 100].Программа должна чертить горизонтальные полоски для каждого студента пропорционально полученной студентом оценке. Все полоски выравниваются по левому краю.

  4. Напишите программу, которая чертит гистограмму оценок. Ваша программа должна читать данные из файла. Каждая строка файла должна содержать целое число от 0 до 10. Ваша программа должна посчитать число вхождений каждой оценки и затем начертить вертикальные полоски для каждой оценки, пропорционально числу вхождений оценки