Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3494 posts.

Центр помощи » Ошибка при написании кода для клавиш в pygame » Июнь 7, 2018 18:21:08

Вообщем,для начинаний в программировании я выбрал Питон. Решил написать игру на Pygame.
Выдаёт такие ошибки:
E1101:Module ‘pygame’ has no ‘QUIT’ member
E1101:Module ‘pygame’ has no ‘K_LEFT’ member
E1101:Module ‘pygame’ has no ‘K_RIGHT’ member
E1101:Module ‘pygame’ has no ‘K_UP’ member
E1101:Module ‘pygame’ has no ‘K_DOWN’ member
Пока что в этой “игре” двигается синий квадрат,но получается только по задумке
Вот весь код:
 import pygame

win = pygame.display.set_mode((500, 500))
pygame.display.set_caption("Cubes Game")

x=50
y=50
width=40
height=60
speed=5

run = True
while run:

pygame.time.delay(100)

for event in pygame.event.get():
if event.type == pygame.QUIT:
run=False

keys=pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
x-=speed
if keys[pygame.K_RIGHT]:
x+=speed
if keys[pygame.K_UP]:
y-=speed
if keys[pygame.K_DOWN]:
y+=speed

pygame.draw.rect(win, (0,0,255), (x,y,width,height))

Python для новичков » Парсер Python. Пропускает данные. » Июнь 7, 2018 16:02:42

Добрый день! Вопрос, почему с сайта он берет не все матчи, а находит только первый. Например Испания- Там играется 4 матча, а он находит только первый и идет дальше.
 import requests
from bs4 import BeautifulSoup
import csv
from datetime import datetime
from multiprocessing import Pool
def get_html(url):
	r = requests.get(url)
	return r.text # Возращает HTML - код страницы
def get_total_pages(html):
	soup = BeautifulSoup(html, 'lxml')
	pages = soup.find('ul', class_='liga_menu').find_all('li')
	links = []
	for li in pages:
		a = li.find('a').get('href') #берем ссылки матчей, это строка(string)
		link = 'https://1xstavka.ru/' + a
		links.append(link) #записывает в конец списка
	return links	
def get_page_data(html):
	soup = BeautifulSoup(html, 'lxml')
	try:
		name = soup.find('span', class_="c-events__teams").text.strip()
	except:
		name = ''
	try:
		schet = soup.find('div', class_='c-events__score').text.strip()
	except:
		schet = ''
	data = {'Матч': name,
			'Счет': schet}
	return data
	
def write_csv(data):
	with open('1xstavka.csv', 'a') as parser:   #Парсер название файла куда все сохраниться
		writer = csv.writer(parser)
		writer.writerow( (data['Матч'],
			              data['Счет']) )
		print(data['Матч'], 'parsed\r')
def make_all(url):
	html = get_html(url)
	data = get_page_data(html)
	write_csv(data)
def main():
	
	url = 'https://1xstavka.ru/live/Football/'
	all_links = get_total_pages( get_html(url) )
	
	#for index, url in enumerate(all_links):  #index придуманная переменная
		#html = get_html(url)
		#data = get_page_data(html)
		#write_csv(data)
		#print(index)
	#map(function, list_)	
	with Pool(15) as p:
		p.map(make_all, all_links)	
if __name__ == '__main__':
	main()

Django » Разобраться с настройкой Django-проекта » Июнь 6, 2018 15:37:08

Привет всем !

Есть проект, просили помочь разобраться.

Хостинг: Linode
СУБД: PostgreSQL 10.3

Смысл в том чтобы помочь понять :
1. Где именно находится БД ( судя по всему на этой Ubuntu-машине PostgreSQL даже не установлен )
2. Чем именно и как запускается Django: gunicorn+ngnix, или что-то еще.

Судя по всему для развертывания использован Docker и Ansible.
И про то и про то я только слышал, руками трогать не доводилось.

Порядок действий такой,
1. вы подключаетесь ко мне по TeamViewer,
2. подключаемся по ssh
3. и вы меня тыкаете носом куда надо смотреть
….
4. Profit! ( 1000-1500 рублей ).

С уважением,
Владимир.

Python для новичков » logging.basicConfig format не меняет формат вывода лога » Июнь 6, 2018 14:59:08

Добрый день!
import logging
 logging.basicConfig(format = '%(levelname)-8s %(message)s', level = logging.DEBUG)

   logging.info("""vm.overcommit_ratio is too small, 
    you will not be able to use more than $overcommit_ratio*RAM+SWAP for applications""")

Вывов:
 2018-06-06 11:52:15 MY-HOSTNAME root[16065] INFO vm.overcommit_ratio is too small, 
    you will not be able to use more than $overcommit_ratio*RAM+SWAP for applications

Как убрать время и юзера при выводе logging.info ?
Спасибо

Python для новичков » modul calendar  » Июнь 5, 2018 18:49:11

Лююди, есть у кого интересные задачи с использованием модуля календарь?? Поделитесьь

Центр помощи » помогите студенту на зачете » Июнь 2, 2018 12:18:03

Нужно решить задачу на Python, я его не понимаю от слова совсем… могу написать на с++, но препону именно python

У меня 30 минут на решение осталось

Python для новичков » Развертка Gms python » Май 31, 2018 12:49:00

Добрый день народ. Прошу помощи у знающих я установил python развернул GMS все без ошибок. При создании страницы выводит ошибку помогите устранить. Делал все по инструкции http://akutepov.ru/ru/blog/sozdanie-saita-na-django-cms/

Код ошибки
AttributeError at /ru/cms_wizard/create/

module ‘html5lib.filters.sanitizer’ has no attribute ‘allowed_elements’

Request Method: POST
Request URL: http://127.0.0.1:8000/ru/cms_wizard/create/
Django Version: 1.11.13
Exception Type: AttributeError
Exception Value:

module ‘html5lib.filters.sanitizer’ has no attribute ‘allowed_elements’

Exception Location: D:\python\lib\site-packages\djangocms_text_ckeditor\html.py in _filter_kwargs, line 21
Python Executable: D:\python\python.exe
Python Version: 3.6.5
Python Path:

['C:\\Users\\vasil\\Desktop\\website\\django_cms_project',
‘D:\\python\\python36.zip’,
‘D:\\python\\DLLs’,
‘D:\\python\\lib’,
‘D:\\python’,
‘D:\\python\\lib\\site-packages’]

Server time: Чт, 31 Май 2018 15:29:13 +0600

Python для новичков » Celery не пишет в лог возникающие исключения. » Май 30, 2018 12:18:19

Всем привет.
Настройки логов в Джанго:
CELERYD_HIJACK_ROOT_LOGGER = False
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'colored': {
'()': DjangoColorsFormatter,
'format': '[%(asctime)s] - %(levelname)s - %(message)s \n',
'datefmt': '%d/%b/%Y %H:%M:%S',
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'colored',
},
},
'loggers': {
'': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'django.request': {
'level': 'DEBUG',
'handlers': ['console'],
'propagate': False,
}
},
}
Вызываю логгер при запуске таска:
 from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
@app.task()
def my_new_task():
    raise Exception('spam-eggs') 
В логах ничего.
Да, можно сделать:
 def my_new_task():
    try:
        ...
    except:
        import traceback
        logger.info(traceback.format_exc())
Но это же, простите, извращение…
Гугл выдает обсуждения типа вот такого, но предложенные там решения тоже костыли.
Что я делаю не так?

Python для новичков » Бинарное дерево поиска.Нужна функция удаления елемента » Май 28, 2018 18:22:15

class Node:
def __init__(self, val):
self.l_child = None
self.r_child = None
self.data = val

def binary_insert(root, node):
if root is None:
root = node
else:
if root.data > node.data:
if root.l_child is None:
root.l_child = node
else:
binary_insert(root.l_child, node)
else:
if root.r_child is None:
root.r_child = node
else:
binary_insert(root.r_child, node)


def in_order_print(root):
if not root:
return
in_order_print(root.l_child)
print(root.data)
in_order_print(root.r_child)

def pre_order_print(root):
if not root:
return
print(root.data)
pre_order_print(root.l_child)
pre_order_print(root.r_child)

Не могу понять как написать метод или функцию ,которая в данном случае удаляла елементы из дерева.
Но при этом выполнялись условия:1Если вершина v0 не имеет сыновей, просто удаляем ее.
2.Если вершина v0 имеет одного сына, удаляем v0 и заменяем ее сыном.

3.Если v0 имеет двух сыновей, находим правого сына v1 вершины v0, а затем находим левого сына вершины v1 (если он существует). Продолжаем выбирать левых сыновей каждой найденной вершины, пока не найдется такая вершина v, в которой не будет левого сына. Заменим v0 на v и сделаем правого сына вершины v левым сыном отца вершины v


Python для новичков » парсинг сайта со ставками » Май 27, 2018 17:54:47

Наткнулся на тему парсинга, поставил себе задачу в учебных целях - распарсить данные на сайте со ставками (live-режим). Взял для примера сайт olimp.bet (не реклама). Взял вкладку live-событий с футболом (https://olimp.bet/app/live/1). Открыл просмотр страницы, всё вроде понятно, есть тег <ul>, внутри <li> в которых содержится вся инфа, которую будем парсить. Открыл реквестом загрузил html, попытался найти <ul> с помощью bs4, но в итоге ничего не нашел.
 import requests
from bs4 import BeautifulSoup
def get_html(url):
	r = requests.get(url)
	return r.text
def get_total_matches(html):
	soup = BeautifulSoup(html, 'lxml')
	matches = soup.find('ul', class_='matches')
	print(matches)
def main():
	url = 'https://olimp.bet/app/live/1'
	html = get_html(url)
	get_total_matches(html)
if __name__ == '__main__':
	main()
Решил посмотреть что вообще приходит в get_html(), а там оказывается кроме двух <div'ов>:
 <div id="root"></div>
  <div id="modal-root"></div>
ничего нет. Как так? Я новичок в этом деле в принципе. Нашел информацию, что нужно смотреть ajax-запросы, но что это такое я плохо представляю, все запросы которые смог найти в консоли во вкладке Network ничего мне не дали. Намекните куда копать, пожалуйста.

Python для новичков » qtwebkit не отображает правильно страничку » Май 24, 2018 14:15:46

Есть страничка
https://ru.tradingview.com/chart/VmQvxdIG/
Есть код браузера. Простейший:

#!/usr/bin/env python

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebKit import *
from PyQt5.QtWebKitWidgets import *
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow


app = QApplication(sys.argv)

web = QWebView()
web.load(QUrl("https://ru.tradingview.com/chart/VmQvxdIG/"))
web.show()

sys.exit(app.exec_())

Но в результате страничка не отображается, Видимо, не пашет анимация.В чем может быть причина?

Python для новичков » Почему python и pip не видит пакета wget установленного через conda? » Май 23, 2018 21:29:09

Почему python и pip не видит пакета wget установленного через conda?
$► conda list |grep wget
wget 1.19.4 hf388c53_0
$► pip list |grep wget
DEPRECATION: The default format will switch to columns in the future. You can use –formatlegacy|columns) (or define a formatlegacy|columns) in your pip.conf under the section) to disable this warning.
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the ‘pip install –upgrade pip’ command.
► pip3 list |grep wget
► PYTHONPATH=$PWD python feature_extractors/embedding_extractor.py -d small
Traceback (most recent call last):
File “feature_extractors/embedding_extractor.py”, line 90, in <module>
import wget
ModuleNotFoundError: No module named ‘wget’

Специально создал окружение >source activate MTS, чтобы не было конфликтов уже второй раз какая разница ставлю пакет через conda или через pip? (edited)

Обсуждение новостей » Выступи на PyCon Russia 2018! » Май 22, 2018 13:58:13

Шестой российский PyCon пройдёт 22-23 июля в отеле «Cronwell Яхонты Таруса» в 95 км. от Москвы. Формат — двухдневная конференция на природе с иностранными докладчиками, Lightning Talks и афтепати.

До 12 июня организаторы принимают заявки на доклады. Если вам есть, что рассказать коллегам, и вы хотите выступить, заполните заявку.

Уже в программе: Сore Python developer, автор uvloop, asyncpg, asyncio Юрий Селиванов (Торонто, Канада), senior developer advocate из Google Melanie Warrick (Сан-Франциско, США), Сore Python developer, security engineer в Red Hat Christian Heimes (Гамбург, Германия), software engineer в Shift Kate Heddleston (Сан-Франциско, США), tech lead в Yelp Stephan Jaensch (Гамбург, Германия), Head of Deployed Engineering в Eigen Technologies Alejandro Saucedo (Лондон, Великобритания).

Подробности и регистрация.

Python для новичков » Масштабирование и вывод в окно чертежей типа .dxf. На чем реализовать. » Май 22, 2018 12:29:09

Есть простая задача которую уже реализовал несколькими способами, но не удается в полном объеме.
Есть рисунок из линий (чертеж типа .dxf) размером до 100 тысяч пикселей (метр на метр с точностью сотой). Нужно его как-то выводить в окно и сдвигать одним из известных способов: двигать или через позицию курсора. Можно ступенчато с перерисовкой в разных масштабах. Т.е. нужно видеть целый чертеж и каждый его кусочек в максимальном разрешении. (0.01мм).
Подскажите на чем реализовать? Вроде во всем получается, но каждый раз затык либо на масштабировании, либо на сдвиге, либо линии уходят за пределы точности экрана.

Python для экспертов » парсера сайта » Май 20, 2018 08:50:47

ищу человека для создания парсера сайта на питоне
скайп Intenso51

Центр помощи » Нужна помощь в pyglet, само задание в приложенном рисунке » Май 19, 2018 14:04:36

Имеется такая заготовка, но я понимаю что это вообще не то, буду благодарен помощи экспертов:

import pyglet
import random
BoundX=400
BoundY=300

window = pyglet.window.Window(BoundX,BoundY)

class squaredobject():
def __init__(self,halfsize,startx,starty,dx=1,dy=1,rndbord=1):
self.__halfsize=halfsize
self.__x=startx
self.__y=starty
self.__dx=dx
self.__dy=dy
self.__rndbord=rndbord
def rules(self,BoundX,BoundY):
changex=random.randint(1,100)
changey=random.randint(1,100)

if changex<=self.__rndbord or not(self.checkx(0,BoundX)):
self.__dx*=-1
if changey<=self.__rndbord or not(self.checky(0,BoundY)):
self.__dy*=-1

def move(self,BoundX,BoundY):
self.rules(BoundX,BoundY)
self.__x+=self.__dx
self.__y+=self.__dy
def draw(self):
pyglet.graphics.draw(4, pyglet.gl.GL_QUADS, ('v2f', [self.__x-self.__halfsize,self.__y-self.__halfsize,
self.__x-self.__halfsize,self.__y+self.__halfsize,
self.__x+self.__halfsize,self.__y+self.__halfsize,
self.__x+self.__halfsize,self.__y-self.__halfsize]))

def checkx(self,leftx,rightx):
if (self.__x-self.__halfsize)<leftx or (self.__x+self.__halfsize)>rightx:
return False
return True
def checky(self,lowy,highy):
if (self.__y-self.__halfsize)<lowy or (self.__y+self.__halfsize)>highy:
return False
return True

class triangledobject(squaredobject):
def __init__(self,halfsize,startx,starty,dx=1,dy=1,rndbord=1):
self.squaredobject=squaredobject(halfsize,startx,starty,dx,dy,rndbord)
def __getattr__(self,attr):
return getattr(self.squaredobject,attr)
def draw(self):
pyglet.graphics.draw(3, pyglet.gl.GL_TRIANGLES, ('v2f', [__x-__halfsize,__y-__halfsize,
__x-__halfsize,__y+__halfsize,
__x+__halfsize,__y+__halfsize]))
dx=1
dy=1
O1=squaredobject(5, window.width//2, window.height//2,1,1,0)
O2=triangledobject(5, window.width//2, window.height//2,-1,-1,0)
period = 1/60.0 # 60 frames per second



def update(dt):
window.clear()
O1.move(BoundX,BoundY)
O1.draw()
O2.move(BoundX,BoundY)
O2.draw()


pyglet.clock.schedule_interval(update, period)

pyglet.app.run()



Python проекты » pyPhpTree - парсинг PHP кода » Май 16, 2018 14:27:39

Написал для плагина к CudaText либу - она парсит PHP код и находит в нем декларации function/class/namespace. Отдает найденные пункты с их уровнем (по скобкам). Парсит нормально комменты, строки (' и ", и многострочные), heredoc. Основано на простом tokenizer.

https://github.com/Alexey-T/pyPhpTree

GUI » Tkinter canvas отрисовка полигонов » Май 14, 2018 23:31:00

Я вычитал, что с помощью Tkinter можно отображать в реальном времени 10000 - 30000 полигонов. У меня отрисовка 500 полигонов уже происходит медленно (0.1 сек кадр). В это число не входят расчеты - только отрисовка. Я что-то не так делаю. Можете подсказать в чем дело? Лучше бы конечно пример с отрисовкой этих 10 000.

Может стоило писать на PyOpengl, но мне просто интересно самому разбираться.
Так же интересно, есть ли какой способ обработать изображения, вроде добавления бликов материалу и прочее. Мне удалось только натянуть текстуры, это получилось очень забаговано (и тут я понял, почему нужны треугольники, а не прямоугольники).

Направьте на путь истинный. )

Python для экспертов » zeep SOAP header » Май 14, 2018 14:49:05

Нужно создать SOAP header по схеме - нашел описание заголовка в:
client.wsdl.services.get('RegOrgService').ports.get('RegOrgPort').binding._operations.
get('exportOrgRegistry').input.header

тип данных этого элемента ‘zeep.xsd.elements.element.Element’ - так понимаю, что в нем все нужное есть. Как мне теперь создать
правильный заголовок ?

В доках к zeep есть пример:

header = xsd.Element(
'{http://test.python-zeep.org}auth',
xsd.ComplexType([
xsd.Element(
'{http://test.python-zeep.org}username',
xsd.String()),
]))

Че дальше делать не пойму..