feat: Added python code
This commit is contained in:
parent
555facc099
commit
5cb2e1483f
89
code/python/authorization.py
Normal file
89
code/python/authorization.py
Normal file
@ -0,0 +1,89 @@
|
||||
import uuid
|
||||
import csv
|
||||
# Генерация случайного UUID (версия 4)
|
||||
import hashlib
|
||||
random_uuid = uuid.uuid4()
|
||||
DB = 'password_db.csv'
|
||||
|
||||
|
||||
class UserFoundException(Exception):
|
||||
pass
|
||||
|
||||
class PasswordWrongException(Exception):
|
||||
pass
|
||||
|
||||
def get_db_password():
|
||||
"""Читаем файл паролей в список"""
|
||||
users = [ ]
|
||||
with open(DB, newline='') as csvfile:
|
||||
spamreader = csv.reader(csvfile, delimiter=':')
|
||||
for row in spamreader:
|
||||
users.append(row)
|
||||
return users
|
||||
|
||||
|
||||
def checkUser(login: str) -> bool:
|
||||
"""Проверяем пользователя в БД"""
|
||||
db = get_db_password()
|
||||
for row in db:
|
||||
if login == row[1]:
|
||||
return row
|
||||
# raise UserFoundException("Такой пользователь существует!")
|
||||
|
||||
try:
|
||||
checkUser('user')
|
||||
except UserFoundException as e:
|
||||
print(e)
|
||||
|
||||
|
||||
|
||||
def calculate_md5(data):
|
||||
"""Вычисляет MD5-хеш для данных."""
|
||||
md5_hash = hashlib.md5(data.encode('utf-8')).hexdigest()
|
||||
return md5_hash
|
||||
|
||||
|
||||
def login(username, passwd):
|
||||
user = checkUser(username)
|
||||
print(user[2])
|
||||
passwd_md5 = calculate_md5(str(passwd))
|
||||
print(passwd_md5)
|
||||
isRight = False if (user[2] == passwd_md5) else True
|
||||
if isRight:
|
||||
raise PasswordWrongException
|
||||
|
||||
|
||||
try:
|
||||
checkUser('user')
|
||||
except UserFoundException as e:
|
||||
print(e)
|
||||
except PasswordWrongException as e:
|
||||
print(e)
|
||||
|
||||
login('oper', 123)
|
||||
exit(0)
|
||||
|
||||
def logout(username):
|
||||
#todo: Сделать флаг выхода из системы
|
||||
pass
|
||||
|
||||
def delete_user(username):
|
||||
#todo: Дописать удаление пользователя
|
||||
pass
|
||||
|
||||
def registration(login, passwd, rep_passwd, phone, email):
|
||||
"""Регистрация пользователей."""
|
||||
if passwd == rep_passwd:
|
||||
passwd_md5 = calculate_md5(passwd)
|
||||
#print(f"MD5-хеш для '{passwd}': {passwd_md5}")
|
||||
str = f"{random_uuid}:{login}:{passwd_md5}:{phone}:{email}\n"
|
||||
with open("password_db.csv", "a+") as fd:
|
||||
fd.write(str)
|
||||
|
||||
_login = input("login:")
|
||||
_passwd = input("passwd:")
|
||||
_rep_passwd = input("rep_passwd:")
|
||||
_phone = input("phone:")
|
||||
_email = input("email:")
|
||||
|
||||
registration( _login, _passwd, _rep_passwd, _phone, _email );
|
45
code/python/random_num.py
Executable file
45
code/python/random_num.py
Executable file
@ -0,0 +1,45 @@
|
||||
import random
|
||||
from random import random as r
|
||||
|
||||
LIMIT = 1
|
||||
rand_int = random.randint(1, 100)
|
||||
counter_fail = 0
|
||||
|
||||
def game():
|
||||
flag = True
|
||||
#counter_fail = 0
|
||||
def wrapper():
|
||||
nonlocal число
|
||||
число = число + 1
|
||||
print(число)
|
||||
|
||||
|
||||
while flag:
|
||||
число = int(input("Введите число:"))
|
||||
|
||||
#print(dir(число))
|
||||
if ( rand_int > число ):
|
||||
print("Угадываемое число больше!")
|
||||
global counter_fail
|
||||
counter_fail += 1
|
||||
|
||||
elif (rand_int < число):
|
||||
print("Угадываемое число меньше!")
|
||||
counter_fail += 1
|
||||
|
||||
else:
|
||||
flag = False
|
||||
print("Win!")
|
||||
|
||||
if LIMIT == counter_fail:
|
||||
print("Fatality!")
|
||||
break
|
||||
|
||||
return (2,3)
|
||||
|
||||
|
||||
|
||||
w, r = game()
|
||||
print(w)
|
||||
print(r)
|
||||
#print(game())
|
Loading…
Reference in New Issue
Block a user