Модуль 12.2 (Модуль random. Часть 2) курса «Поколение Python: курс для продвинутых» курс расскажет о:
- Метод
shuffle()
- Метод
choice()
- Метод
sample()
- Модуль
string
Публикуем решения на урок 12.2 Модуль random. Часть 2.
Установите соответствие между функцией и ее действием.

Какое число может быть в переменной
num
после выполнения следующего кода:import random
numbers = [1, 2, 3, 5, 7]
num = random.choice(numbers)
1
2
3
5
7
Какое число может быть в переменной
num
после выполнения следующего кода?import random
numbers = list(range(2, 10, 2))
num = random.choice(numbers)
2
6
8
4
Какой список может храниться в переменной
rand_numbers
после выполнения следующего кода?import random
numbers = [1, 2, 4, 6, 7, 9]rand_numbers = random.sample(numbers, 3)
[7, 4, 2]
[1, 2, 6]
[6, 1, 4]
IP адрес состоит из четырех чисел из диапазона от 0 до 255 (включительно) разделенных точкой.
Напишите функцию
generate_ip()
, которая с помощью модуляrandom
генерирует и возвращает случайный корректный IP адрес.
import random
def generate_ip():
res, a = '', 0
for i in range(4):
a = str(random.randint(0, 255)) + '.'
res += a
return res[:-1]
print(generate_ip())
Почтовый индекс в Латверии имеет вид:
LetterLetterNumber_NumberLetterLetter
, гдеLetter
– заглавная буква английского алфавита,Number
– число от 0 до 99 (включительно).Напишите функцию
generate_index()
, которая с помощью модуляrandom
генерирует и возвращает случайный корректный почтовый индекс Латверии.
import random as r
import string
def generate_index():
S = string.ascii_uppercase
ind = (''.join(r.sample(S, 2)) + str(r.randrange(100))
+ "_" + str(r.randrange(100)) + ''.join(r.sample(S, 2)))
return ind
Напишите программу, которая с помощью модуля
random
перемешивает случайным образом содержимое матрицы (двумерного списка).
import random
matrix = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]
for i in range(len(matrix)):
random.shuffle(matrix[i])
random.shuffle(matrix)
Напишите программу, которая с помощью модуля
random
генерирует 100 случайных номеров лотерейных билетов и выводит их каждый на отдельной строке. Обратите внимание, вы должны придерживаться следующих условий:номер не может начинаться с нулей;
номер лотерейного билета должен состоять из 7 цифр;
все 100 лотерейных билетов должны быть различными.
from random import randrange
tickets = set()
while len(tickets) != 100:
tickets.add(randrange(1000000, 10000000))
print(*tickets, sep='\n')
Анаграмма – это слово образованное путём перестановки букв, составляющих другое слово.
Например, слова пила и липа или пост и стоп – анаграммы.
Напишите программу, которая считывает одно слово и выводит с помощью модуля
random
его случайную анаграмму.
from random import shuffle as shuf
word = list(input())
shuf(word)
print("".join(word))
Для игры в бинго требуется карточка размером 5×5, содержащая различные (уникальные) целые числа от 1 до 75 (включительно), при этом центральная клетка является пустой (она заполняется числом 0).
Напишите программу, которая с помощью модуля
random
генерирует и выводит случайную карточку для игры в бинго.
import random
num = random.sample(range(1, 76), 25)
num[12] = 0
for i in range(len(num)):
print(str(num[i]).ljust(3), end = '')
if i in [4, 9, 14, 19]:
print()
Напишите программу, которая случайным образом назначает каждому ученику его тайного друга, который будет вместе с ним решать задачи по программированию.
from random import *
fri = [input() for _ in range(int(input()))]
fricop = fri.copy()
a = 0
def rand(a, b):
r = 0
for i, j in zip(a, b):
if i!=j:
r+=1
return r
while a != len(fri):
shuffle(fricop)
a = rand(fri, fricop)
for k, l in zip(fri, fricop):
print(k,'-',l)
Напишите программу, которая с помощью модуля
random
генерирует n паролей длиной m символов, состоящих из строчных и прописных английских букв и цифр, кроме тех, которые легко перепутать между собой:«l» (L маленькое);
«I» (i большое);
«1» (цифра);
«o» и «O» (большая и маленькая буквы);
«0» (цифра).
import random
n, m = int(input()), int(input())
s = [i for i in '23456789']
s.extend([chr(i) for i in range(ord('a'), ord('z')) if i not in [ord('l'),ord('i'), ord('o')] ])
s.extend([chr(i) for i in range(ord('A'), ord('Z')) if i not in [ord('L'),ord('I'), ord('O')] ])
for _ in range(n):
random.shuffle(s)
p = ""
for i in range(m):
p += s[i][0]
print(p)
Напишите программу, которая с помощью модуля
random
генерирует n паролей длиной m символов, состоящих из строчных и прописных английских букв и цифр, кроме тех, которые легко перепутать между собой:«l» (L маленькое);
«I» (i большое);
«1» (цифра);
«o» и «O» (большая и маленькая буквы);
«0» (цифра).
Дополнительное условие: в каждом пароле обязательно должна присутствовать хотя бы одна цифра и как минимум по одной букве в верхнем и нижнем регистре.
import string
import random
def generate_password(length):
s = ''.join([i for i in (string.printable[:62]) if i not in '10OolI'])
return(''.join(random.sample(s[:8], 1) + random.sample(s[8:30], 1) + random.sample(s[30:], length - 2)))
def generate_passwords(count):
return[generate_password(m) for _ in range(count)]
n, m = int(input()), int(input())
print(*generate_passwords(n), sep='\n')
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы
return(».join(random.sample(s[:8], 1) + random.sample(s[8:32], 1) + random.sample(s[32:], length — 2)))
Подправил
Было бы неплохо объяснения писать к заданиям.Сухой код конечно тоже хорошо разбирать но с пояснениями и комментариями было бы легче.