Форум сайта python.su
import telebot import requests from bs4 import BeautifulSoup url = "https://www.nbrb.by/statistics/rates/ratesdaily.asp" def cours(): url = "https://afisha.tut.by/day/2019/10/24" req = requests.get(url) page = req.text soup = BeautifulSoup(page,"lxml") catalog = [] ivents = soup.findAll('div', attrs= {'class' : 'm-b-border tab-pane active'}) for films in ivents: films = films.findAll('a', attrs= {'class' : 'name'}) for film in films: film = film.text catalog.append(film) return catalog r = cours() keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True) keyboard1.row('Movies' , 'Courses') bot = telebot.TeleBot('TOKEN') @bot.message_handler(commands=['go']) def start_message(message): bot.send_message(message.chat.id,'Здарова,братан', reply_markup=keyboard1) @bot.message_handler(content_types=['text']) def send_message(message): if message.text.lower() == 'movies': mov = [] for i in r: mov.append(i) bot.send_message(message.chat.id, mov) bot.polling()
# Головоломка Ханойская башня class Disk: def __init__(self, number, color): self.number = number self.view = self.get_disk(number, color) def get_disk(self, number, color): disk = '\u2588' * (number*2+1) shift = ' ' * ((13-len(disk))//2) disk_line = f'{shift}{disk}{shift}' return f'\033[{color}m{disk_line}\033[0m' def get_pole(pyramid): pole, j = [], 1 height = len(pyramid) free = 6 - height for i in range(6): if i < free: pole.append(' \u2551 ') else: disk = pyramid[height - j] pole.append(disk.view) j += 1 return pole def show(poles): show_time = [] for i in list('123'): show_time.append(get_pole(poles[i])) fmt = '{:^13}'*3 print(fmt.format(1, 2, 3)) for a, b, c in zip(*show_time): print(f'{a}{b}{c}') def check_moves(move, poles): from_pole, to_pole = move.split() if from_pole == to_pole or \ not from_pole in poles or\ not to_pole in poles: return False fp = poles[from_pole] if len(fp) > 0: move_disk = fp[-1] else: return False tp = poles[to_pole] if len(tp) > 0: top_disk = tp[-1] else: return True if move_disk.number < top_disk.number: return True return False def move(from_pole, to_pole, poles): fp, tp = poles[from_pole], poles[to_pole] tp.append(fp.pop()) def choice_n_disks(): n_disks = 3 s = input('Введите число дисков[1..5](по умолчанию 3):\n>> ').strip() if s in list('12345'): n_disks = int(s) low_steps = 2**n_disks-1 print(f'Дисков в башне: {n_disks}.\nМинимальное число ходов,' f' за которые возможно перемещение: {low_steps}.') return n_disks, low_steps def introduce(): print('Головоломка "Ханойская башня".\n' 'Правила:\n' ' башня состоит из дисков;\n' ' нужно переместить башню на вторую позицию;\n' ' перемещение происходит по одному диску за ход;\n' ' для перемещения доступны только верхние диски;\n' ' разрешается перемещать:\n' ' меньший диск на больший,\n' ' любой диск на позицию без дисков;\n' ' пример первого хода: 1 2\n' ' верхний диск с позиции 1 переместится на позицию 2;\n' ) def run_game(poles, win): show(poles) steps = 1 while True: s = input(f'Ход {steps}, введите перемещение или exit:\n>> ') if s == 'exit': exit() elif len(s.split()) == 2 and check_moves(s, poles): move(*s.split(), poles) show(poles) if win == poles['2']: return steps steps += 1 else: print(f'Ошибка ввода, не допустимое перемещение: "{s}".') def get_poles(n_disks): colors = [91, 92, 94, 95, 96] poles = { '1': [], '2': [], '3': [], } pole = poles['1'] for i in range(n_disks, 0, -1): pole.append(Disk(i, colors[i-1])) return poles, pole.copy() def main(): win_msg = 'Поздравляю! Башня перемещена! Ходов: ' introduce() while True: n_disks, low_steps = choice_n_disks() poles, win = get_poles(n_disks) steps = run_game(poles, win) if steps == low_steps: print(f'{win_msg}{steps}. Отлично!!!') else: print(f'{win_msg}{steps}. Вы можете лучше!!!') s = input('Сыграем еще?([y]/n)\n>> ') if s == 'n': return if __name__ == '__main__': main()
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager from django.contrib.auth.models import PermissionsMixin from django.db import models from django.utils import timezone from django.utils.translation import ugettext_lazy as _ class SteamUserManager(BaseUserManager): def _create_user(self, steamid, password, **extra_fields): """ Creates and saves a User with the given steamid and password. """ try: # python social auth provides an empty email param, which cannot be used here del extra_fields['email'] except KeyError: pass if not steamid: raise ValueError('The given steamid must be set') user = self.model(steamid=steamid, **extra_fields) user.set_password(password) user.save(using=self._db) return user def create_user(self, steamid, password=None, **extra_fields): extra_fields.setdefault('is_staff', False) extra_fields.setdefault('is_superuser', False) return self._create_user(steamid, password, **extra_fields) def create_superuser(self, steamid, password, **extra_fields): extra_fields.setdefault('is_staff', True) extra_fields.setdefault('is_superuser', True) if extra_fields.get('is_staff') is not True: raise ValueError('Superuser must have is_staff=True.') if extra_fields.get('is_superuser') is not True: raise ValueError('Superuser must have is_superuser=True.') return self._create_user(steamid, password, **extra_fields) class SteamUser(AbstractBaseUser, PermissionsMixin): USERNAME_FIELD = 'steamid' steamid = models.CharField(max_length=17, unique=True) personaname = models.CharField(max_length=255) profileurl = models.CharField(max_length=300) avatar = models.CharField(max_length=255) avatarmedium = models.CharField(max_length=255) avatarfull = models.CharField(max_length=255) # Add the other fields that can be retrieved from the Web-API if required date_joined = models.DateTimeField(_('date joined'), default=timezone.now) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) objects = SteamUserManager() def get_short_name(self): return self.personaname def get_full_name(self): return self.personaname
from authentication.models import SteamUser
def get_username(strategy, uid, user=None, *args, **kwargs):
"""Removes unnecessary slugification and cleaning of the username since the uid is unique and well formed"""
if not user:
username = uid
else:
username = strategy.storage.user.get_username(user)
return {'username': username}
def user_details(user, details, strategy, *args, **kwargs):
"""Update user details using data from provider."""
if user:
changed = False # flag to track changes
protected = ('steamid', 'id', 'pk') + tuple(strategy.setting('PROTECTED_USER_FIELDS', []))
# Update user model attributes with the new data sent by the current
# provider. Update on some attributes is disabled by default, for
# example username and id fields. It's also possible to disable update
# on fields defined in SOCIAL_AUTH_PROTECTED_FIELDS.
if details['player']:
for name, value in details['player'].items():
if value is not None and hasattr(user, name):
current_value = getattr(user, name, None)
if not current_value or name not in protected:
changed |= current_value != value
setattr(user, name, value)
if changed:
strategy.storage.user.changed(user)
def associate_existing_user(uid, *args, **kwargs):
"""If there already is an user with the given steamid, hand it over to the pipeline"""
if SteamUser.objects.filter(steamid=uid).exists():
return {
'user': SteamUser.objects.get(steamid=uid)
}
from django.conf.urls import url from django.contrib.auth.decorators import login_required from authentication.views import IndexView, LogoutView urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), url(r'^logout', login_required(LogoutView.as_view(), login_url='/'), name='logout') ]
from django.contrib.auth import logout from django.shortcuts import render, redirect from django.views import View class IndexView(View): def get(self, request): return render(request, 'index.html') class LogoutView(View): def get(self, request): logout(request) return redirect('auth:index')
from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^', include(('social_django.urls', 'social'), namespace='social')), url(r'^', include(('authentication.urls', 'auth'), namespace='auth')), ]
QGraphicsDropShadowEffect()
from PySide2 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(308, 387) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setObjectName("pushButton") self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1) self.comboBox = QtWidgets.QComboBox(self.centralwidget) self.comboBox.setObjectName("comboBox") self.gridLayout.addWidget(self.comboBox, 0, 1, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 308, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "MainWindow", None, -1)) self.pushButton.setText(QtWidgets.QApplication.translate("MainWindow", "PushButton", None, -1)) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
class ContactForm(forms.Form): name = forms.CharField( max_length=100, label='Имя', widget=forms.TextInput(attrs={'class': 'name req'}) ) email = forms.EmailField( widget=forms.TextInput(attrs={'class': 'email req'}), required=True ) message = forms.CharField( label='Сообщение', widget=forms.Textarea(attrs={'class': 'message req'}) ) captcha = ReCaptchaField(widget=ReCaptchaWidget())
class ContactPageView(FormView): template_name = 'contact.html' form_class = ContactForm success_url = reverse_lazy('thanks') def form_valid(self, form): email_subject = 'Сообщение с нового сайта страница контакты' email_body = 'С сайта отправлено новое сообщение\n\n' \ 'Имя отправителя: %s \n' \ 'E-mail отправителя: %s \n' \ 'Сообщение: \n' \ '%s ' %\ (form['name'], form['email'], form['message']) send_mail(email_subject, email_body, settings.EMAIL_HOST_USER, ['admin@yandex.ru']) return super(ContactPageView, self).form_valid(form) class ThanksView(TemplateView): template_name = 'thanks.html'
import os import csv import smtplib, ssl from random import Random import time rng = Random() chars = 'QqWwEeRrTtAaSsDdFfGgZzXxCcVvBbYyUuiPpHhJjKkLNnMm' digits = '23456789' symbols = '!@#$%^*()' me = 'admin@mydomain.ru' s = smtplib.SMTP('smtp.yandex.com', 465) s.login('admin@mydomain.ru', 'yourpass') u = csv.reader(open('users.csv', 'rU')) n = csv.writer(open('newpasswd.csv', 'wb')) def passwordGenerator(): p = '' for i in range(4): p += rng.choice(chars) p += rng.choice(digits) p += rng.choice(symbols) return p def sendPassword(you, login, password): msg = ("From: %s\r\nSubject: %s\r\nTo: %s\r\n\r\n" % (me, 'Password', you)) msg += 'login: %s\npassword: %s\n' % (login, password) s.sendmail(me, [you], msg) for row in u: login = row[ 0] you = row[1] c = 1 while c != 0: password = passwordGenerator() print '-' * 33 print 'login: %s' % login c = os.system('net user %s %s' % (login, password)) n.writerow([login, password]) sendPassword(you, login, password) s.quit()
class Obj(): # Итерируемый объект def __init__(self, word): self.word = word def __iter__(self): return Iterator(self.word) class Iterator: # Итератор def __init__(self, word): self.word = word self.index = 0 def __next__(self): try: letter = self.word[self.index] self.index += 1 return letter except IndexError: raise StopIteration() def __iter__(self): return self obj = Obj('sergey') it = iter(obj) print(it.__next__()) print(it.__next__()) print(it.__next__()) print(it.__next__()) print(it.__next__()) print(it.__next__()) print(it.__iter__())
class Obj(): # функция-генератор def __init__(self, word): self.word = word def __iter__(self): # генератор for l in self.word: yield l obj = Obj('sergey') it = iter(obj) print(next(it)) print(next(it)) print(next(it)) print(next(it)) print(next(it)) print(next(it)) print(iter(it))
# функция подключения к базе def getConnection(): connection = pymysql.connect( host="localhost", user="pedro", password="456654Qq!", db="crossref", charset="utf8mb4", cursorclass=DictCursor ) return connection # начало программы import pymysql from pymysql.cursors import DictCursor xConn = getConnection() with xConn: cur = xConn.cursor() cur.execute("select * from _Table1") for row in cur: print("ID_Employee", row["ID_Employee"]) # получаю построчный вывод значений выборки из таблицы _Table1. Это ОК. # # мне нужно взять здесь в переменную значение поля из таблицы _Table1, пойти в таблицу _Table2 # проделать с _Table2 какие-то действия и вернуться в цикл на следующую запись в _Table1 # как это сделать?