Проекты по курсу - Python для начинающих
Угадайка чисел
Описание проекта: программа генерирует случайное число в диапазоне от 1 до 100 и просит пользователя угадать это число.
Если догадка пользователя больше случайного числа, то программа должна вывести сообщение 'Слишком много, попробуйте еще раз'.
Если догадка меньше случайного числа, то программа должна вывести сообщение 'Слишком мало, попробуйте еще раз'.
Если пользователь угадывает число, то программа должна поздравить его и вывести сообщение 'Вы угадали, поздравляем!'.
Ссылка на replit
from random import randint
def is_valid(text):
if text.isdigit():
if 1 <= int(text) < 100:
return True
else:
return False
else:
return False
num = randint(1, 100)
print('Добро пожаловать в числовую угадайку')
n = input('Начните угадование числа, введите первое число: ', )
for i in range(9, 0, -1):
if is_valid(n):
number = int(n)
if number < num:
print('Ваше число меньше загаданного, попробуйте еще разок')
print('У вас осталось', i, 'попыток')
n = input('Ведите число: ', )
elif number > num:
print('Ваше число больше загаданного, попробуйте еще разок')
print('У вас осталось', i, 'попыток')
n = input('Ведите число: ', )
else:
print('Вы угадали, поздравляем!')
break
else:
print('А может быть все-таки введем целое число от 1 до 100?')
print('У вас осталось', i, 'попыток')
n = input('Ведите число: ', )
print('Спасибо, что играли в числовую угадайку. Еще увидимся...')
Магический шар 8
Описание проекта: магический шар 8 (шар судьбы) — шуточный способ предсказывать будущее.
Программа должна просить пользователя задать некий вопрос, чтобы случайным образом на него ответить.
Ссылка на replit
import random
answers = ['Бесспорно', 'Мне кажется - да', 'Пока неясно, попробуй снова', 'Даже не думай','Предрешено', 'Вероятнее всего', 'Спроси позже', 'Мой ответ - нет','Никаких сомнений', 'Хорошие перспективы', 'Лучше не рассказывать', 'По моим данным - нет','Определённо да', 'Знаки говорят - да', 'Сейчас нельзя предсказать','Перспективы не очень хорошие','Можешь быть уверен в этом', 'Да', 'Сконцентрируйся и спроси опять', 'Весьма сомнительно']
print('Привет Мир, я магический шар, и я знаю ответ на любой твой вопрос.')
name = input('А теперь введи мне свое имя: ', )
print('Привет,', name)
n = input('Введите свой вопрос: ', )
while True:
print(random.choice(answers))
q = input('Хотите задать еще вопрос, если "Да" введите - Д, в противном случай любую другую букву ', )
if q.lower() == "д":
n = input('Введите свой вопрос: ', )
else:
print('Возвращайся если возникнут вопросы!')
break
Генератор безопасных паролей
Описание проекта: программа генерирует заданное количество паролей и включает в себя умную настройку на длину пароля,
а также на то, какие символы требуется в него включить, а какие исключить.
Ссылка на replit
import random
def generate_password(length, chars):
for _ in range(n):
print('Ваш пароль №', _+1, ': ', *random.sample(chars, length), sep='')
digits = '0123456789'
lowercase_letters = 'abcdefghijklmnopqrstuvwxyz'
uppercase_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
punctuation = '!#$%&*+-=?@^_.'
chars = ''
n = int(input('Сколько паролей вы хотите получить? Введите число: '))
length = int(input('Какой длины должен быть пароль? Введите число: '))
add_digit = input('Включить цифры? "д" - да, "н" - нет: ').strip().lower()
add_lowercase = input('Включить прописные буквы? "д" - да, "н" - нет: ').strip().lower()
add_uppercase = input('Включить строчные буквы? "д" - да, "н" - нет: ').strip().lower()
add_punctuation = input('Включить символы, такие как !#$%&*+-=?@^_? "д" - да, "н" - нет: ').strip().lower()
remove_badsymbols = input('Исключить неоднозначные символы: i l 1 L o 0 O? "д" - да, "н" - нет: ').strip().lower()
if add_digit == 'д':
chars += digits
if add_lowercase == 'д':
chars += lowercase_letters
if add_uppercase == 'д':
chars += uppercase_letters
if add_punctuation == 'д':
chars += punctuation
if remove_badsymbols == 'д':
for i in 'il1Lo0O':
chars = chars.replace(i, '')
generate_password(length, chars)
Шифр Цезаря
Шифр Цезаря (шифр сдвига) — один из самых простых и наиболее широко известных методов шифрования.
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором
постоянном числе позиций левее или правее него в алфавите.
Ссылка на replit
def caesar_cipher(char, num):
if ord('A') <= ord(char) <= ord('Z'):
base = ord('A')
new_i = (ord(char) - base + num) % 26 + base
return chr(new_i)
elif ord('a') <= ord(char) <= ord('z'):
base = ord('a')
new_i = (ord(char) - base + num) % 26 + base
return chr(new_i)
elif ord('а') <= ord(char) <= ord('я'):
base = ord('а')
new_i = (ord(char) - base + num) % 32 + base
return chr(new_i)
elif ord('А') <= ord(char) <= ord('Я'):
base = ord('А')
new_i = (ord(char) - base + num) % 32 + base
return chr(new_i)
else:
return char
text = input('Введите текст -> ')
action = input('Для шифрования текста введите - s, для дешифрования введите - d: ').lower()
while action != 's' and action != 'd':
action = input('Что-то не так, введите либо "s" либо "d" ')
key = input('Введите число сдвига: ')
while key.isdigit() is not True:
key = input('Что-то не так, проверьте что это число, а не текст и напишите снова: ')
key = int(key)
new_text = ''
if action == 's':
for i in text:
new_text += caesar_cipher(i, key)
print('Ваш зашифрованный текст:', new_text)
elif action == 'd':
for i in text:
new_text += caesar_cipher(i, -key)
print('Ваш расшифрованный текст:', new_text)
А также