Чтение онлайн

на главную - закладки

Жанры

Решаем задачи Python
Шрифт:

Пример реализации программы для генерации паролей:

```python

import random

import string

def generate_password(length, uppercase=True, lowercase=True, digits=True, special_chars=True):

# Определяем символьные наборы для пароля

chars = ''

if uppercase:

chars += string.ascii_uppercase

if lowercase:

chars += string.ascii_lowercase

if digits:

chars += string.digits

if special_chars:

chars += string.punctuation

#

Генерируем пароль из символов заданной длины

password = ''.join(random.choice(chars) for _ in range(length))

return password

# Пример использования

length = 12

password = generate_password(length)

print("Сгенерированный пароль:", password)

```

Этот код генерирует случайный пароль с заданной длиной `length` и заданными требованиями к сложности. Функция `generate_password` принимает следующие аргументы:

– `length`: длина пароля;

– `uppercase`, `lowercase`, `digits`, `special_chars`: булевы значения, указывающие, нужно ли включать в пароль буквы верхнего и нижнего регистра, цифры и специальные символы соответственно.

Внутри функции используется модуль `random` для выбора случайных символов из символьных наборов, сформированных на основе требований к паролю. Функция `string.ascii_uppercase` возвращает все буквы верхнего регистра, `string.ascii_lowercase` – все буквы нижнего регистра, `string.digits` – все цифры, а `string.punctuation` – все специальные символы.

Затем символы выбираются случайным образом из объединенного набора символов и объединяются в строку, формируя пароль.

16. Задача с шахматной доской: Определить, можно ли покрыть шахматную доску доминошками размером 2x1.

Для решения этой задачи давайте рассмотрим особенности шахматной доски и доминошек.

Шахматная доска имеет размер 8x8 и состоит из 64 клеток. Каждая клетка имеет размер 1x1.

Доминошки имеют размер 2x1. Это означает, что каждая доминошка занимает две смежные клетки доски вдоль одной из сторон.

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

Таким образом, для определения возможности покрытия шахматной доски доминошками, достаточно проверить, является ли количество клеток доски четным или нет.

Пример кода на Python:

```python

def can_cover_chessboard:

rows = 8

cols = 8

total_cells = rows * cols

return total_cells % 2 == 0

# Проверяем возможность покрытия шахматной доски доминошками

if can_cover_chessboard:

print("Шахматную

доску можно покрыть доминошками.")

else:

print("Шахматную доску нельзя покрыть доминошками.")

```

Этот код определит, можно ли покрыть шахматную доску доминошками размером 2x1 или нет, и выведет соответствующее сообщение.

17. Задача о работе с текстом: подсчет количества слов в тексте и вывод наиболее часто встречающихся слов.

Идея решения будет следующей:

1. Разделить текст на отдельные слова (токенизация).

2. Привести слова к нижнему регистру для учета слов с разным регистром как одинаковых.

3. Удалить стоп-слова (если требуется).

4. Подсчитать количество упоминаний каждого слова.

5. Вывести наиболее часто встречающиеся слова.

Пример кода на Python, реализующий это:

```python

from collections import Counter

import re

import string

def count_words(text):

# Привести текст к нижнему регистру

text = text.lower

# Удалить знаки пунктуации

text = text.translate(str.maketrans('', '', string.punctuation))

# Разделить текст на слова

words = re.findall(r'\b\w+\b', text)

return Counter(words)

def most_common_words(counter, n=10):

return counter.most_common(n)

# Пример текста

text = """

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer sed sollicitudin leo. Vestibulum sed magna eget odio consequat commodo. Aliquam erat volutpat. Quisque pharetra diam nec enim facilisis, vel fringilla metus faucibus. Donec a posuere ligula. Suspendisse potenti. Nulla facilisi. Duis auctor lobortis risus, sit amet consectetur enim. Sed in odio nec diam volutpat rhoncus non nec libero. Phasellus scelerisque lacinia mi. Nulla non ullamcorper leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Curabitur nec eros non quam consequat vestibulum. Morbi euismod odio quis libero consectetur, a dictum mauris volutpat. Nam ac leo orci. Aliquam malesuada justo vel eros venenatis, nec scelerisque sem tempus.

"""

# Подсчет слов и вывод наиболее часто встречающихся слов

word_counter = count_words(text)

most_common = most_common_words(word_counter)

print("Наиболее часто встречающиеся слова:")

for word, count in most_common:

print(f"{word}: {count}")

```

Этот код сначала подсчитывает количество встречаемости каждого слова в тексте, а затем выводит наиболее часто встречающиеся слова с их количеством встречаний.

Пояснения к коду:

1. Функция `count_words`:

Поделиться:
Популярные книги

Газлайтер. Том 19

Володин Григорий Григорьевич
19. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 19

Проклятый Лекарь

Молотов Виктор
1. Анатомия Тьмы
Фантастика:
фэнтези
5.00
рейтинг книги
Проклятый Лекарь

Герой

Бубела Олег Николаевич
4. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Герой

Сын счастья

Вассму Хербьёрг
2. Книга Дины
Проза:
современная проза
5.00
рейтинг книги
Сын счастья

Неучтенный элемент. Том 9

NikL
9. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 9

Стражи душ

Кас Маркус
4. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Стражи душ

Пращуры русичей

Жоголь Сергей
Проза:
историческая проза
6.00
рейтинг книги
Пращуры русичей

Развод в 45. От любви до ненависти

Гофман Крис
6. Развод
Любовные романы:
остросюжетные любовные романы
5.40
рейтинг книги
Развод в 45. От любви до ненависти

Геном хищника. Книга седьмая

Гарцевич Евгений Александрович
7. Я - Легенда!
Фантастика:
боевая фантастика
рпг
фэнтези
попаданцы
5.00
рейтинг книги
Геном хищника. Книга седьмая

Личный аптекарь императора. Том 4

Карелин Сергей Витальевич
4. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора. Том 4

Двойник Короля 7

Скабер Артемий
7. Двойник Короля
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Двойник Короля 7

Натиск

Осадчук Алексей Витальевич
12. Последняя жизнь
Фантастика:
аниме
фэнтези
попаданцы
6.20
рейтинг книги
Натиск

Газлайтер. Том 5

Володин Григорий
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5

Геном хищника. Книга девятая

Гарцевич Евгений Александрович
9. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Геном хищника. Книга девятая