Задачи этого листочка пока не проверяются автоматически. Их можно решать и присылать текст программы в telrgram на адрес @achehlova или файл с программой с расширением .py на адрес achehlova@179.ru.

В следующих задачах понадобится функция randint из модуля random и цикл while.

Функция randint(a, b) имеет два целых параметра, первый должен быть не больше второго. При каждом следующем вызове функция randint даёт в ответе новое целое число на отрезке от a до b (включая эти числа). Если вызывать эту функцию очень много раз и посчитать, сколько раз выпало каждое целое число на заданном отрезке, то получится, что все числа выпадали примерно одинаковое число раз.

Для использования функции randint необходимо подключить её из библиотеки в начале программы, что делается командой

from random import randint

После этого функцию randint можно вызывать следующим образом:

from random import randint
n = 10
a = 5
b = 8
for i in rande(n):
    print(randint(a, b))

A: Угадайка (2 балла)

Программа получает на вход два целых числа А и В и "загадывает" случайное число в диапазоне от А до В.

Программа печатает: "Я загадал число от ... до ... . Угадай!" (нужно вставить соответствующие значения).

Пользователь вводит число, и программа отвечает: "Моё число больше!" или "Моё число меньше!", и предлагает ввести новое число. Так происходит до тех пор, пока число не будет угадано. Тогда программа печатает: "Число угадано!"

B: Угадайка наоборот - случайное угадывание (3 балла)

Программа получает на вход два целых числа А и В и предлагает пользователю загадать число в этом диапазоне (число программе неизвестно). После этого программа выводит случайное число в этом диапазоне и пишет: "Если твоё число меньше, введи знак <, если твоё число больше, введи знак >, если я угадал, введи =.

После того, как пользователь вводит ответ, программа выводит новое случайное число, и так до тех пор, пока число не будет угадано. Тогда программа выводит сообщение "Ура!" (или что-то в этом роде).

Если пользователь вводит что-то непонятное, программа переспрашивает (может быть, несколько раз). После того, как будет дан понятный ответ, программа должна продолжить угадывание.

Если пользователь ошибётся (то есть его ответы приведут к противоречию), программа выводит соответствующее сообщение и прекращает работу.

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

C: Угадайка наоборот - оптимальное угадывание (3 балла)

Программа получает на вход два целых числа А и В и предлагает пользователю загадать число в этом диапазоне (число программе неизвестно). После этого программа выводит число в середине диапазона и пишет: "Если твоё число меньше, введи знак <, если твоё число больше, введи знак >, если я угадал, введи =.

После того, как пользователь вводит ответ, программа выводит новое число, опять в середине возможного диапазона, и так до тех пор, пока число не будет угадано. Тогда программа выводит сообщение "Ура!" (или что-то в этом роде).

Если пользователь вводит что-то непонятное, программа переспрашивает (может быть, несколько раз). После того, как будет дан понятный ответ, программа должна продолжить угадывание.

Если пользователь ошибётся (то есть его ответы приведут к противоречию), программа выводит соответствующее сообщение и прекращает работу.

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

D: Две строки

Напишите программу, которая считывает с клавиатуры две строки с неповторяющимися символами и печатает:

  1. сколько символов из второй строки содержится в первой строке,
  2. все символы из второй строки, которые входят в первую строку,
  3. все символы из второй строки, которые НЕ входят в первую строку.

Используйте цикл for и оператор in. Обойдитесь одним циклом.

E: Повторяющиеся символы

Программа получает на вход строку. Если в ней есть повторяющмеся символы, выводит "YES", если нет, выводит "NO".

Используйте цикл for и оператор in.

Hello
YES
abcdefgh
NO
IDE

F: Случайные символы из строки

Напишите программу, которая получает на вход строку с неповторяющимися символами и число K меньше длины строки. Программа должна вывести случайные неповторяющиеся K символов из этой строки.

Чтобы вычислить случайный символ, используйте функцию randint. Чтобы символы не повторялись, удалите выбранный символ из исходной строки и повторите операцию нужное число раз.

G: Перестановки

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

Разумеется, в строке ничего изменить и переставить нельзя (а списки пока не используем!) Это должна быть новая строка с теми же символами, но в другом порядке.

H: Быки и коровы (3 балла)

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

Если в строке игрока есть загаданные символы, которые стоят на своих местах, программа говорит: "столько-то быков". Если в строке игрока есть загаданные символы, которые стоят не на своих местах, программа говорит: "столько-то коров" (символы, стоящие на своих местах, при подсчёте коров надо исключить!). На каждом шаге игрок предлагает свой ответ, а программа отвечает: "Столько-то быков, столько-то коров." Игра заканчивается, когда строка угадана.

Задачи D, E, F, G являются подготовительными для этой задачи.

I: Загадочное число - 1 (3 балла)

N --- последняя цифра десятичного натурального числа. Если её переставить на первое место, а остальные цифры сдвинуть, то число увеличится в Kраз. Найдите исходное число.

Гарантируется, что задача имеет решение. Возьмите, например, N=3, K=2. Что должно получиться, вычислите сами.

J: Загадочное число - 2 (2 балла)

N --- последняя цифра десятичного натурального числа. Если её переставить на первое место, а остальные цифры сдвинуть, то число увеличится в Kраз. Найдите исходное число.

Если задача не имеет решения, выведите "NO" (например, при N=1, K=2).