Решение модуля 12.2 Поколение Python: для продвинутых

Модуль 12.2 (Модуль random. Часть 2) курса «Поколение Python: курс для продвинутых» курс расскажет о:

  • Метод shuffle()
  • Метод choice()
  • Метод sample()
  • Модуль string

Публикуем решения на урок 12.2 Модуль random. Часть 2.

Установите соответствие между функцией и ее действием.

Решение модуля 12.2 Поколение Python: для продвинутых

Какое число может быть в переменной 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')

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

2 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Виктор
Виктор
8 месяцев назад

return(».join(random.sample(s[:8], 1) + random.sample(s[8:32], 1) + random.sample(s[32:], length — 2)))
Подправил

Последний раз редактировалось 8 месяцев назад Виктор ем
Виктор
Виктор
1 год назад

Было бы неплохо объяснения писать к заданиям.Сухой код конечно тоже хорошо разбирать но с пояснениями и комментариями было бы легче.

2
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x