random.choices
есть возможность задавать "вес" для элементов. Например:import random
item_chances = {
'item_1': 10,
'item_2': 30,
'item_3': 50,
'item_4': 70,
'item_5': 90
}
selected = random.choices(
list(item_chances.keys()), weights=list(item_chances.values()), k=5000)
for item in set(selected):
print(f'{item}: {selected.count(item)}')
item_1
самый маленький вес, то есть самый маленький шанс выпадения этого значения, в то время как у item_5
самый высокий. Аргумент k
указывает сколько элементов нужно выбрать. В данном случае 5000 я выбрал для теста. Вывод:item_1: 175
item_2: 578
item_3: 1001
item_4: 1458
item_5: 1788
from flask import Flask, request, jsonify
from flask_jwt_extended import (
JWTManager,
create_access_token,
jwt_required,
get_jwt_identity
)
app = Flask(__name__)
app.config['SECRET_KEY'] = 'super-secret'
app.config['JWT_SECRET_KEY'] = app.config['SECRET_KEY']
app.config['JWT_ACCESS_TOKEN_EXPIRES'] = False
jwt = JWTManager(app)
users = ['kshnkvn']
@app.route('/login', methods=['POST'])
def login():
user = request.json.get('user')
if user not in users:
return jsonify(
{'status': False, 'result': 'User not exists'})
else:
return jsonify(
{'status': True, 'result': create_access_token(identity=user)})
@app.route('/user', methods=['GET'])
@jwt_required
def user():
user = get_jwt_identity()
return jsonify({'status': True, 'result': user})
if __name__ == '__main__':
app.run(debug=True, port=6061)
/user
без заголовка с авторизацией, то получаем в ответ:{
"msg": "Missing Authorization Header"
}
POST
запрос на /login
где в теле запроса отправляем JSON
с именем пользователя, а в ответ получаем токен:{
"status": true,
"result": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2MDYzOTk0NjcsIm5iZiI6MTYwNjM5OTQ2NywianRpIjoiMTgxZmY2ZGQtN2FmNS00ZTUxLTlhMzAtODA3MTNhYzNlZGJlIiwiaWRlbnRpdHkiOiJrc2hua3ZuIiwiZnJlc2giOmZhbHNlLCJ0eXBlIjoiYWNjZXNzIn0.DwzxBd-6Hz1Gg6O-7JIoFrBm_XzCoiOD6xIRhFUjG0Q"
}
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2MDYzOTk0NjcsIm5iZiI6MTYwNjM5OTQ2NywianRpIjoiMTgxZmY2ZGQtN2FmNS00ZTUxLTlhMzAtODA3MTNhYzNlZGJlIiwiaWRlbnRpdHkiOiJrc2hua3ZuIiwiZnJlc2giOmZhbHNlLCJ0eXBlIjoiYWNjZXNzIn0.DwzxBd-6Hz1Gg6O-7JIoFrBm_XzCoiOD6xIRhFUjG0Q"
и заходим на нужную ссылку, например для /user
будет следующий ответ:{
"status": true,
"result": "kshnkvn"
}
students = [
{'first_name': 'Вася'},
{'first_name': 'Петя'},
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Петя'},
]
names = dict()
for student in students:
if student['first_name'] not in names.keys():
names[student['first_name']] = 1
else:
names[student['first_name']] += 1
for name, count in names.items():
print(f'{name}: {count}')
names = [s['first_name'] for s in students]
for name in set(names):
print(f'{name}: {names.count(name)}')
import re
foo = '1. 4x Apples. \n2. 5x Bananas \n3. 6x Oranges\n4. 3x Pears\n'
bar = '1. Ice cream \n2. Rice \n3. Flour\n4. Cola\n'
def to_list(s):
return re.findall(r'\d+\.\s(.+?)(?=\s?\n)', s)
to_list(foo)
# ['4x Apples.', '5x Bananas', '6x Oranges', '3x Pears']
to_list(bar)
# ['Ice cream', 'Rice', 'Flour', 'Cola']
import re
soup.find_all('a', href=re.compile(r'nearLocation'))
soup.select('a[href*=nearLocation]')
Хочу разобраться как устроенны веб приложения от и до, писать чистый код и покрывать его тестами
читаю классику и научпоп (Д. Дойч, Р. Докинз, Д. Хофштадтер)
import time
msg1 = f"Привет, {name}!" #Первая строка сообщения
msg2 = f"Твой номер #{numb}." #Вторая строка
msg_box = driver.find_element_by_xpath("//*[@id='main']/footer/div[1]/div[2]/div/div[2]")
msg_box.click()
for s in (msg1, msg2):
for c in s:
msg_box.send_keys(s)
time.sleep(0.2)
ActionChains(driver).key_down(Keys.SHIFT).key_down(Keys.ENTER).key_up(Keys.SHIFT).key_up(Keys.ENTER).perform()
ActionChains(driver).send_keys(Keys.RETURN).perform()
I like people, not only books. In my childhood I figured out that I should think about how
other people feel, this led to desire to be a psychologist but after playing with computers I
discovered that programming can solve so much more.