Задачи этого листочка пока не проверяются автоматически. Их можно решать и присылать текст программы в 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 балла)
Программа получает на вход два целых числа А и В и "загадывает" случайное число в диапазоне от А до В.
Программа печатает: "Я загадал число от ... до ... . Угадай!" (нужно вставить соответствующие значения).
Пользователь вводит число, и программа отвечает: "Моё число больше!" или "Моё число меньше!", и предлагает ввести новое число. Так происходит до тех пор, пока число не будет угадано. Тогда программа печатает: "Число угадано!"
Программа получает на вход два целых числа А и В и предлагает пользователю загадать число в этом диапазоне (число программе неизвестно). После этого программа выводит случайное число в этом диапазоне и пишет: "Если твоё число меньше, введи знак <, если твоё число больше, введи знак >, если я угадал, введи =.
После того, как пользователь вводит ответ, программа выводит новое случайное число, и так до тех пор, пока число не будет угадано. Тогда программа выводит сообщение "Ура!" (или что-то в этом роде).
Если пользователь вводит что-то непонятное, программа переспрашивает (может быть, несколько раз). После того, как будет дан понятный ответ, программа должна продолжить угадывание.
Если пользователь ошибётся (то есть его ответы приведут к противоречию), программа выводит соответствующее сообщение и прекращает работу.
Алгоритм угадывания должен быть такой, чтобы число можно было угадать за разумное число шагов. Инструкцию break использовать нельзя!
Программа получает на вход два целых числа А и В и предлагает пользователю загадать число в этом диапазоне (число программе неизвестно). После этого программа выводит число в середине диапазона и пишет: "Если твоё число меньше, введи знак <, если твоё число больше, введи знак >, если я угадал, введи =.
После того, как пользователь вводит ответ, программа выводит новое число, опять в середине возможного диапазона, и так до тех пор, пока число не будет угадано. Тогда программа выводит сообщение "Ура!" (или что-то в этом роде).
Если пользователь вводит что-то непонятное, программа переспрашивает (может быть, несколько раз). После того, как будет дан понятный ответ, программа должна продолжить угадывание.
Если пользователь ошибётся (то есть его ответы приведут к противоречию), программа выводит соответствующее сообщение и прекращает работу.
Алгоритм угадывания должен быть такой, чтобы число можно было угадать за разумное число шагов. Инструкцию break использовать нельзя!
D: Две строки
Напишите программу, которая считывает с клавиатуры две строки с неповторяющимися символами и печатает:
сколько символов из второй строки содержится в первой строке,
все символы из второй строки, которые входят в первую строку,
все символы из второй строки, которые НЕ входят в первую строку.
Используйте цикл 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).