Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3494 posts.

Инструментальные средства разработки » kivy-designer устарел есть аналоги? » Ноя. 20, 2019 19:11:38

есть аналоги (конструкторы UI) кивидесигнер для киви
ps xubuntu 18.04

Python для новичков » Телебот, как вывести список одним сообщением? » Ноя. 18, 2019 22:38:07

Нужно, чтобы бот, в ответ выводил список фильмов, которые парсит функция, но одним сообщением. Если делать циклом то выходит один фильм - одно сообщение. Вот я пробовал вывести созданный перебором список, но выводит только первый элемент.
 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()

Python для новичков » Головоломка Ханойская башня » Ноя. 18, 2019 22:29:56

Привет
 # Головоломка Ханойская башня
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()

Python для новичков » Сравнение групп Active Directory » Ноя. 18, 2019 09:10:29

Добрый день.

Есть задача ежедневного мониторинга групп AD на предмет изменений.
C помощью модулей active_directory, python-ldap получаю список групп и пользователей в них.

Вопрос. Как оптимально реализовать хранение результатов (список групп АД, список пользователей в каждой группе)т.е. в каком виде их сохранять: текстовый файл, бд, json и т.п.? И как грамотнее реализовать сравнение сегодняшнего и вчерашнего результата, чтобы на выходе получить инфу о том, кто в какой группе был перемещен/удален/добавлен?
Код не нужен. Просто описание способа, желательно простого и надежного.

Заранее благодарю за помощь.

Django » Проблемы с авторизацией через Steam OpenID Django » Ноя. 13, 2019 20:25:09

Всем привет! Может вы видели мой прошлый топик о том, как я ищу решение проблемы авторизации через стим на своём сайте. Так вот, в кратце, я нашёл верное решение, огромный респект человеку, который смог создать примитивное решение и выложить в сеть.
Перейду к делу, изучив код я понял, что он был написан ещё в 2015 году, короче говоря, ещё до глобальных изменений джанге, а именно система юрлов и тд. и тп. Код работает на 2/3, но есть одна небольшая проблема. При переходе на страницу логина через стим, запрашивает логин и пароль от стима, хорошо, авторизируюсь, прохожу стим гвард и после этого мне возвращается ошибка 403(1-й скрин собственно)
У меня есть версия, что это происходит из-за того, что запрос на стим приходит не в том виде, в котором должен. Имею ввиду, с запросе не передаются некоторые параметры, потому что я сравнил свой запрос и запрос с рандомного сайта, на котором есть авторизация через стим. Приложу сюда весь код, надеюсь на вашу помощь! Спасибо!

models.py
 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

pipeline.py(используется библиотека social-auth)
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)
}

urls.py приложения
 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')
]

views.py приложения
 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')

urls.py основной

 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')),
]

Центр помощи » массив » Ноя. 13, 2019 14:13:10

Добрый вечер,помогите пожалуйста,не могу справиться
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
• сумму отрицательных элементов массива;
• произведение элементов массива, расположенных между максимальным и минимальным элементами. Упорядочить элементы массива по возрастанию.

Python для новичков » Предсказывание пола ребенка в заданном поколении  » Ноя. 9, 2019 18:33:09

Всем привет!

Имеет интересная задачка.

У мужчины довольно странная семейная структура. У каждого мужчины в его семье вначале рождается мальчик, а затем дочка. У каждой женщины — наоборот, вначале девочка, а затем мальчик. Мужчины хочет научиться предсказывать пол K ребенка в N поколении. Напишите соответствующий код

Утилита должна работать с условиями 1 <= K <= min(10^15, 2^(n-1)) and 1 <= N <= 10000

Написал часть кода, но хотел бы попросить о помощи с продолжением

#Asking to enter desired number of child in desired generation
child_number = input(“Please, enter desired number of child:”)
generation = input(“Please, enter desired generation”)
#Checking whether the input of desired number of child and desired generation is numeric
try :
child_number = int(child_number)
generation = int(generation)
except :
print(“Error, please enter numeric input”)
quit()
if 1 <= child_number <= min(10**15, 2**(generation - 1)) :
#There should be the body of the code
else :
print(“Please, enter the diffent number of the child”)
if 1 <= generation <= 10000 :
#There should be the body of code
else :
print(“Please, enter the generation number between 1 and 10 000”)

Python для новичков » тени в pyside и pyqt » Ноя. 6, 2019 10:35:07

всем доброго времени суток,у меня есть такая проблемка,я в python не так давно,так што пожалуйста если можете,обьясните как можно легче,спасибо.
у меня есть вот такой код python,скомпилированный из ui,моя цель поставить тени на кнопки,для этого я пытался использовать pyqt5, а именно
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_())

Python для новичков » Как использовать API Компас для его автоматизации? » Окт. 30, 2019 09:50:10

есть питон 3.8 ,есть Swapy и inspector ,есть компас и описание его API но как это все связать не понимаю приложение я открыть смог а вот например дальше как создать автоматом документ типа деталь не понимаю,пособите кто нибудь

Mobile Python » Включение фонарика Qpython » Окт. 30, 2019 02:55:21

Здарова, ребята, тут идейка появилась, а точнее потребность в ней. Я хочу использовать фонарик в качестве вывода шифра морзе. Я все сделал осталось только узнать команду включения фонаря.
Я пробовал это выполнить через Termux(Bash), но скорость реакции фонаря на команду слишком низкая.
Вооооот… Че сказать еще? А! Короч, у меня тупая афера была и из-за нее я теперь иду в армейку.Вооооот…

Центр помощи » Не появляется картинка в окне ткинтер, когда нажимаю таб вылетает ошибка » Окт. 26, 2019 18:52:12

from PIL import ImageTk, Image
from random import *
from tkinter import *
root = Tk()
root.geometry(“600x600”)
root.title(“НЕ СМОТРЕТЬ”)
canvas = Canvas(root, width = 600, height = 600, bg = “white”)
canvas.pack()
root.iconbitmap(r“c:\Users\пашКА\PycharmProjects\Sneyka\apple-128 (1).ico”)
def kvadro(x, y):
canvas.create_line(x, y, x + 100, y)
canvas.create_line(x + 100, y, x + 100, y + 100)
canvas.create_line(x, y, x, y + 100)
canvas.create_line(x, y + 100, x + 100, y + 100)
canvas.create_text(x + 50, y - 10, text= “a”, font=“Impact 20 bold”, fill=“black”)
canvas.create_text(x + 50, y + 110, text= “a”, font=“Impact 20 bold”, fill=“black”)
canvas.create_text(x - 10, y + 50, text = “b”, font=“Impact 20 bold”, fill=“black”)
canvas.create_text(x + 110, y + 50, text = “b”, font=“Impact 20 bold”, fill=“black”)
def formu(x, y):
canvas.create_text(x, y, text=“2(bc) = 2b * 2c”, font=“Impact 20 bold”, fill=“darkred”)
def gg(event):
x = randint(0, 600)
y = randint(0, 600)
z = randint(0, 2)
‘'’if z == 0:
canvas.create_text(x, y, text=“P = 2 * (a * b)”, font=“Impact 20 bold”, fill=“darkblue”)
elif z == 1:
kvadro(x, y)
else:
formu(x,y)
canvas.update()'''
open_img = open(“!win.png”)
img = PhotoImage(open_img)
ogo = canvas.create_image(x, y, image=img)
canvas.update()
canvas.delete(ogo)

root.bind(“<Tab>”, gg)
root.mainloop()



Exception in Tkinter callback
Traceback (most recent call last):
File “C:\Games\Новая папка\lib\tkinter\__init__.py”, line 1705, in __call__
return self.func(*args)
File “CUsers/пашКА/PycharmProjects/tchk/ввв.py”, line 38, in gg
ogo = canvas.create_image(x, y, image=img)
File “C:\Games\Новая папка\lib\tkinter\__init__.py”, line 2489, in create_image
return self._create('image', args, kw)
File “C:\Games\Новая папка\lib\tkinter\__init__.py”, line 2480, in _create
*(args + self._options(cnf, kw))))
TypeError: __str__ returned non-string (type _io.TextIOWrapper)

Django » После отправки сообщения не происходит редирект » Окт. 25, 2019 15:00:58

Добрый день, коллеги! На сайте реализовал форму обратной связи следующим образом:
forms.py
 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())
views.py
 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'

раньше все работало и после отправки сообщения происходил редирект на страницу thanks.html. Сегодня обнаружил, что сообщения оправляются, а редирект не происходит. В коде ничего не правил, может кто подскажет куда рыть?

Python для новичков » Не отправляет сообщение через smtplib.SMTP на почту » Окт. 24, 2019 12:55:24

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

Не получается настроить отправку сообщения с яндекс (с гугл тоже не отправляется) - подскажите, что исправить требуется?

Версия Python 2.7.15

 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()

Центр помощи » Не удаётся создать телеграм бота » Окт. 22, 2019 19:09:15

Всё что сделал с нуля, установил с офф сайта со вкладки загрузка последнюю версию Python. Обновил pyTelegramBotAPI до 3.6.6 и какой то pip до последней версии(по просьбе командной строки). И попытался через командную строку скомпилировать, вылезают вот такие страшные слова, нужна помощь в общем.
Сам код:
import telebot

bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM')

@bot.message_handler(commands
def start_message(message):
bot.send_message(message.chat.id, ‘Привет, ты написал мне /start’)

bot.polling(none_stop=True, timeout=100)

Python для новичков » Правилен ли набор тезисов? » Окт. 20, 2019 00:42:36

меня попросили сделать доклад на тему “итераторы и генераторы в python”. так как я пока новичок, то беспокоюсь правильно ли я сам понимаю тему. ниже я приведу несколько тезисов, которые буду рассказывать подробно и с примерами. оцените пожалуйста их. если увидите грубые ошибки и неточности, то укажите мне на них пожалуйста чтобы я поработал над этими моментами более тщательно

я не ставлю задачи рассказать слушателям о практических вещах типа заморозки функции при помощи yield, но хотел бы показать что представляют из себя генераторы и итераторы под капотом(не углубляясь сильно).

итак, вот мои тезисы:

  • 1. следует чётко различать понятия: итерируемый объект, итератор; функция-генератор, генератор.
    2. итератор и генератор реализуют интерфейс итератора. То есть имеют методы __iter__(), __next__().
    3. итерируемый объект и функция генератор обязательно имеют функцию __iter__(), которая возвращает итератор и генератор соответственно.
    4. итерируемый объект содержит коллекцию, к элементам которой можно обратиться по индексу.
    5. функция-генератор содержит “формулу”, по которой генерируются элементы коллекции.
    6. итерируемый объект можно перебирать при помощи итератора много раз.
    7. функцию-генератор можно перебрать при помощи генератора только один раз.
    8. генератор в отличие от итератора экономит оперативную память потому что не хранит всю коллекцию в ней.
    9. если генератору вместо “формулы” передать коллекцию, то он будет перебирать её как итератор(не экономя оперативную память).
    10. каждая итериция в итераторе и в генераторе совершается явным вызовом __next__().
    11. цикл for при каждом проходе неявно вызывает __next__().
    12. генераторное выражение является синтаксическим сахаром для функции-генератора. оно тоже имеет “формулу” и __iter__().

Пример итератора:

 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))

Центр помощи » Заполнить массив » Окт. 9, 2019 15:24:59

Имеется массив коэффициентов с(i) состоящий из N элементов. Требуется заполнить массив W(j) где W(0)=a
Требуется заполнить массив W следующим образом:
W(1)=W(0)*c(1)
W(2)=c(1)*W(1)+c(2)*W(0)
W(3)=c(1)*W(2)+c(2)*W(1)+c(3)*W(0)
W(4)=c(1)*W(3)+c(2)*W(2)+c(3)*W(1)+c(4)*W(0) и так далее
как организовать?

Python для новичков » MySQL как в цикле одной таблицы обращаться к другой и возвращаться на место ? » Окт. 8, 2019 11:41:06

извиняюсь за тупой вопрос.
это по сути вопрос к MySQL, но он очень простой.
Вопрос в тексте программы в самом конце.
Благодарю !

 # функция подключения к базе
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
# как это сделать?

Центр помощи » Помогите решить задачу » Сен. 27, 2019 00:39:46

Пришло время выполнять практическое задание – разрабатывать клиент небольшой игры. Для этого участники объединяются в команды по два или три человека. Алиса решила быть в команде со своей подругой Викой. Она хочет доказать, что ее команда самая лучшая, и для этого собирается вместе с Викой сделать игру быстрее всех остальных команд. Они посчитали, что для этого им понадобится 2𝑛 часов. Чтобы все было честно, каждая из участниц будет работать над игрой ровно 𝑛 часов. Кроме того, так как работая одновременно девушки будут постоянно ссориться, они решили заниматься игрой поочередно, сменяя друг друга. При этом они не собираются делать перерывов, чтобы закончить игру ровно через 2𝑛 часов после начала – ведь им нужно всех опередить. Из-за занятий в университете и других активностей девушки не могут в любой момент сменять друг друга, а только в определенные промежутки времени. При этом для максимальной концентрации они хотят меняться как можно меньшее число раз. Помогите Алисе узнать, сможет ли ее команда в таких условиях сделать полностью игру, и, если сможет, какое минимальное число раз им придется сменять друг друга?

Входные данные:
Первая строка содержит два целых числа 𝑛 и 𝑘 (1 ≤ 𝑛 ≤ 105, 1 ≤ 𝑘 ≤ 20), разделенные пробелом. Следующие 𝑘 строк содержат описания промежутков времени, когда девушки могут меняться. Каждая строка содержит два целых числа 𝑙𝑖 и 𝑟𝑖 (0 ≤ 𝑙𝑖 ≤ 𝑟𝑖 ≤ 2 ∙ 𝑛), разделенные пробелом. Эти числа означают, что сменить друг друга Алиса и Вика могут в любой момент времени по прошествии 𝑙𝑖 часов от начала разработки игры и не позже 𝑟𝑖 часов включительно. В частности, если 𝑙𝑖 = 𝑟𝑖, то они могут поменяться только в точности в момент 𝑙𝑖 = 𝑟𝑖 от начала. Гарантируется, что все интервалы идут в хронологическом порядке и не пересекаются, то есть 𝑙𝑖 > 𝑟𝑖−1 для всех 2 ≤ 𝑖 ≤ 𝑘.

Выходные данные:
Выведите в единственную строку «No» без кавычек, если игру невозможно полностью закончить, иначе выведите в первую строку «Yes» без кавычек, а во вторую – минимальное количество раз, когда девушкам нужно будет сменить друг друга.

Django » Пара вопросов по работе с Djangop » Сен. 22, 2019 11:24:14

1. Семантические адреса страниц следует вводить на админ сайте вручную или они конструируются автоматически?
2. Должен ли вставляемый в базу данных из файла на админ сайте текстовый фрагмент страницы быть предварительно преобразованным в HTML-формат с использованием таблиц стилей CSS для сохранения первоначального форматирования или это происходит автоматически?
Заранее признателен за ответы.

Инструментальные средства разработки » pycharm и pygame » Сен. 21, 2019 19:11:44

Я знаю что вопрос ни как не относиться к python, но я не смог найти ответы в инете и спросить на других форумах.
В pycharm и только в нем окно pygame (именно само окно pygame) очень большое. Подскажите плиз как изменить его размер?