Форум сайта python.su
# Программа "Ходилка" # С намёком на игру # Смысл программы в том, что бы перемещать некий объект по карте # и закрепить на практике теорию объектно ориентированного программирования. # Питон 3.4 # Кодировка UTF-8 class Клетка(object): """Свойства и состояния клетки карты""" клетка = [] дерево = "Х" пусто = " " class Генератор2дМассива(object): """Генерирует двумерный массив из заданных параметров.""" def генерация_массива(собств, вертикаль, горизонталь): массив = [] for координата_У in range(вертикаль): массив.append([]) for координата_Х in range(горизонталь): массив[координата_У].append([]) # Возвращаем созданный массив: return массив class ИгровойЭкран(Клетка, Генератор2дМассива): """Отображает на экране видимую область""" def __init__(собств, горизонталь=3, вертикаль=3): """ Инициализирует игровой экран (зону видимости персонажа) :param горизонталь: задаёт размер экрана, по ширине, :param вертикаль: задаёт размер экрана, по высоте, :return:возвращает двумерный массив экрана """ собств.экран = собств.создание_изображения_экрана(вертикаль, горизонталь) собств.ширина = горизонталь собств.высота = вертикаль собств.коорд_У = 1 собств.коорд_Х = 1 собств.выход = "" def перемещение_по_карте(собств, локация): """ Перемещает экран по карте локации. """ # Начинаем цикл с запросом на перемещение. print(локация.высота) while собств.выход != "выход": print("координаты камеры : У =", собств.коорд_У, "Х =", собств.коорд_Х) # Осуществляем срез с карты локации для проецирования на экран. for ц in range(собств.высота): собств.экран[ц] = локация.карта[собств.коорд_У + ц]\ [собств.коорд_Х: собств.коорд_Х + собств.ширина] # Выводим изображение на экран и запрашиваем у пользователя направление движения. собств.изображение() направление = собств.запрос_направления() собств.изменение_координат(локация, направление) def изменение_координат(собств, локация, направление): "Изменяет координаты экрана (перемещает по карте)." print(локация.высота) # Перемещаем камеру. if направление == "север": собств.коорд_У -= 1 elif направление == "юг": собств.коорд_У += 1 elif направление == "восток": собств.коорд_Х -= 1 elif направление == "запад": собств.коорд_Х += 1 elif направление == "выход": собств.выход = направление return собств.выход # выход из программы. else: print("Фраза", направление, "- не является возможным направлением.") # Проверяем координаты экрана на достижение границ карты. if собств.коорд_У < 0: собств.коорд_У = 0 elif собств.коорд_Х < 0: собств.коорд_Х = 0 elif собств.коорд_У >= локация.высота - собств.высота: собств.коорд_У = локация.высота - собств.высота elif собств.коорд_Х >= локация.ширина - собств.ширина: собств.коорд_Х = локация.ширина - собств.ширина # Возвращаем координаты камеры. return собств.коорд_Х, собств.коорд_У def запрос_направления(собств): """Запрашивает у пользователя направление движения.""" НАПРАВЛЕНИЕ = ["север", "юг", "запад", "восток", "выход"] направление = "" while направление not in НАПРАВЛЕНИЕ: направление = input( "Напишите, куда желаете направиться: север, юг, запад или восток? ").lower() if направление not in НАПРАВЛЕНИЕ: print("Неверная команда, попробуйте ещё раз.") return направление def изображение(собств): print(собств.экран[0][0], "|", собств.экран[1][0], "|", собств.экран[2][0]) print("--------------") print(собств.экран[0][1], "|", собств.экран[1][1], "|", собств.экран[2][1]) print("--------------") print(собств.экран[0][2], "|", собств.экран[1][2], "|", собств.экран[2][2]) def создание_изображения_экрана(собств, вертикаль=3, горизонталь=3): экран = собств.генерация_массива(вертикаль, горизонталь) return экран class КартаЛокации(Клетка, Генератор2дМассива): """Пространство, по которому перемещается герой""" def __init__(собств, горизонталь=10, вертикаль=10): """Создаёт карту локации и расставляет на ней деревья.""" собств.карта = собств.генерация_карты(вертикаль, горизонталь) собств.высота = вертикаль собств.ширина = горизонталь # Эта программа герерирует двумерный массив карты и объекты на ней. def генерация_карты(собств, вертикаль=10, горизонталь=10): """ Генерирует карту, и расставляет на ней деревья.""" import random карта = собств.генерация_массива(вертикаль, горизонталь) # Расставляем обозначения на карту. for у in range(вертикаль): for х in range(горизонталь): выбор_объекта = random.randint(0, 3) if выбор_объекта <= 1: карта[у][х].append(собств.пусто) else: карта[у][х].append(собств.дерево) return карта локация1 = КартаЛокации() экран = ИгровойЭкран() экран.перемещение_по_карте(локация1)
#-*-coding: utf-8 -*- from PyQt4 import QtCore, QtGui, QtSql import sys import kinterbasdb class LoginWindow(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.lineEditName = QtGui.QLineEdit() self.lineEditDbase = QtGui.QLineEdit() self.lineEditPass = QtGui.QLineEdit() self.lineEditIp = QtGui.QLineEdit() self.lineEditPass.setEchoMode(2) self.buttonOk = QtGui.QPushButton("Ok") self.hbox = QtGui.QHBoxLayout() self.hbox.addWidget(self.buttonOk) self.form =QtGui.QFormLayout() self.form.addRow("Login:", self.lineEditName) self.form.addRow("Pass:", self.lineEditPass) self.form.addRow("BD:", self.lineEditDbase) self.form.addRow("Ip:", self.lineEditIp) self.form.addRow(self.hbox) self.setLayout(self.form) self.lineEditPass.setFocus() self.buttonOk.clicked.connect(self.on_Ok) def on_Ok(self): host = "192.168.1.88:E:\BD\BD1.FDB" BDUSER = "XXXX" BDPASSWORD = "XXX" #raw_input ("password ") con = kinterbasdb.connect(dsn=host,user=BDUSER,password=BDPASSWORD) cur = con.cursor() cur.execute('SELECT* FROM TABLE1') for row in cur: print 'ID', row[0] print 'NAME', row[1] #Окно для подтверждения закрытия def closeEvent(self, event): reply = QtGui.QMessageBox.question(self, 'Message', "Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: event.accept() else: event.ignore() app = QtGui.QApplication(sys.argv) win = LoginWindow() win.show() sys.exit(app.exec_())
#!/usr/bin/python #-*- coding:utf-8 -*- from tkinter import * from tkinter import ttk import sqlite3 # класс главного окна class main: def __init__(self, master): self.master = master self.master.title('parent') self.master.geometry('600x400+300+225') self.button = Button(self.master, text = 'myButton', command = self.openDialog) self.button.grid() self.edit = Entry(self.master) self.edit.grid() #создание таблицы t=ttk.Treeview(self.master,show='headings', selectmode='browse', height=20) # Даем заголовки колонкам t["columns"]=("im","fam","otch") #регулируем колонки t.column("im",width=75,anchor="center" ) t.column("fam", anchor= "center") t.column("otch", anchor= "center") #меняем название столбцов t.heading("im", text = "Имя") t.heading("fam",text="Фамилия") t.heading("otch",text="Отчество") #ввод данных t.insert("",0,values=("1","2")) t.grid() #Таблица завершена self.master.mainloop() def openDialog(self): child(self.master) # класс дочерних окон class child: def __init__(self, master): self.slave = Toplevel(master) self.slave.title('child') self.slave.geometry('200x150+500+375') self.edit= Entry(self.slave) self.edit.grid() self.art=Button(self.slave, text="privet") self.art.grid() self.slave.grab_set() self.slave.focus_set() self.slave.wait_window() # создание окна root = Tk() # запуск окна main(root)
from tkinter import * import sqlite3 con= sqlite3.connect('maddb') cur=con.cursor() cur.execute('''CREATE TABLE fio( id INTEGER, im VARCHAR(10))''')
header=""" 'Content-Type: application/json'""" data="""'{"jsonrpc": "2.0", "method": "Input.Home","id": 1}'""" params="""{"id":1,"jsonrpc":"2.0","result":"OK"}""" call(['curl', '-H', header, '-d', data, 'http://127.0.0.1:88/jsonrpc', params])
def trade(ord_type, ord_rate, ord_amount, p): try: nonce = int(int(time.time()*10)%(10*60*60*24*366*10)-867780726+26000000)*2+1 # method name and nonce go into the POST parameters params = {"method":"Trade", "nonce": nonce, "pair": p, "type": ord_type, "rate": ord_rate, "amount": ord_amount} params = urllib.urlencode(params) # Hash the params string to produce the Sign header value H = hmac.new(BTC_secret, digestmod=hashlib.sha512) H.update(params) sign = H.hexdigest() headers = {"Content-type": "application/x-www-form-urlencoded", "Key":BTC_key, "Sign":sign} conn = httplib.HTTPSConnection("btc-e.com") conn.request("POST", "/tapi", params, headers) response = conn.getresponse() a = json.load(response)
def buy(): x=get() i=0 z=0 while i<1: nonce = int(int(time.time()*10)%(10*60*60*24*366*10)-867780726+26000000)*2+1 a=x+i i=i-0.002 print a params={"method":"Trade", "nonce": nonce, "pair": "ppc_usd", "type": "buy", "rate": a, "amount": 0.11} # method name and nonce go into the POST parameters params = urllib.urlencode(params) # Hash the params string to produce the Sign header value H = hmac.new(BTC_secret, digestmod=hashlib.sha512) H.update(params) sign = H.hexdigest() headers = {"Content-type": "application/x-www-form-urlencoded", "Key":BTC_key, "Sign":sign} conn = httplib.HTTPSConnection("btc-e.com") try: conn.request("POST", "/tapi", params, headers) except httplib.HTTPException: raise BTCEError("HTTP error: " + response.reason) if a<0.7: break
table = Table('data', metadata, Column('id', Integer, primary_key=True, index=True), Column('created', TIMESTAMP, index=True), Column('temperature', Float))
От До Средняя температура 11.00 11.10 15.3 11.10 11.20 13.1 11.20 11.30 13.5
time_step = 600 period_from = ... perion_to = ... t_step = (datetime.datetime.min + datetime.timedelta(seconds=time_step)).time() # convert seconds <type 'int'> to <type 'datetime.time'> t_from = (((table.c.created - period_from)/t_step)*t_step + table.c.created).label('t_from') table.select([t_from, table.c.temperature]).where(created.c.created.between(period_from, perion_to))
import lxc m = lxc.Container('server') my_gw = '192.168.1.1' m.set_config_item('lxc.network.0.ipv4.gateway',my_gw)
False
import vk_api import time def main(): login, password = '+7921*********', '***********' try: vk = vk_api.VkApi(login, password, app_id = 4540191) except vk_api.AuthorizationError as error_msg: print(error_msg) return # и выйдем values = { 'owner_id':-77369731, 'message':'test' } try: response = vk.method('wall.post', values) print 'True post' except: print 'Error Post' time.sleep(2) if __name__ == '__main__': main()
class VkApi(object): def __init__(self, login=None, password=None, number=None, token=None, proxies=None, captcha_handler=None, config_filename=None, api_version='5.24', app_id=2895443, scope=2097151): """ :param login: Логин ВКонтакте :param password: Пароль ВКонтакте :param number: Номер для проверке безопасности (указывать, если в качестве логина используется не номер) :param token: access_token :param proxies: proxy server {'http': 'http://127.0.0.1:8888/', 'https': 'https://127.0.0.1:8888/'} :param captcha_handler: Функция для обработки капчи :param config_filename: Расположение config файла :param api_version: Версия API (default: '5.21') :param app_id: Standalone-приложение (default: 2895443) :param scope: Запрашиваемые права (default: 2097151) """
import socket import subprocess import threading def server(): cmdline = 'mplayer -fps 30 -cache 1024 -' player = subprocess.Popen(cmdline.split(), stdin=subprocess.PIPE) while True: data = client.recv(1024) player.stdin.write(data) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('0.0.0.0', 60000)) s.listen(1) client, addr = s.accept() thread = threading.Thread(target=server) thread.daemon = True thread.start()
import wx import socket import MplayerCtrl as mpc import threading class Frame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, wx.ID_ANY) self.mpc = mpc.MplayerCtrl(self, wx.ID_ANY, 'mplayer',mplayer_args=('-cache','1024','-fps','30','-')) self.Show() def server(): while True: data = client.recv(1024) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('0.0.0.0', 60000)) s.listen(1) client, addr = s.accept() application = wx.App() Main = Frame() thread = threading.Thread(target=server) thread.daemon = True thread.start() application.MainLoop()
import os import netCDF4 import numpy as np Directory_Src='L:'+os.sep+'_Example'+os.sep File_Src=Directory_Src+'Aug-Sep_2-50m.nc' f = netCDF4.Dataset(File_Src, 'r') for v in f.variables: print (v) #??? вот здесь присваивание данных каждой переменной своему массиву ???
#!/usr/bin/python from gi.repository import Gtk win = Gtk.Window() win.connect("delete-event", Gtk.main_quit) win.show_all() Gtk.main()
>>> Style().theme_names() ('winnative', 'clam', 'alt', 'default', 'classic', 'xpnative')
#!/usr/bin/python # -*- coding: utf-8 -*- import wx import os import time ID_BUTTON=100 ID_EXIT=200 ID_SPLITTER=300 class MyListCtrl(wx.ListCtrl): def __init__(self, parent, id): wx.ListCtrl.__init__(self, parent, id, style=wx.LC_REPORT) #~ files = os.listdir('.') # чётность #~ if (j % 2) == 0: #~ self.SetItemBackgroundColour(j, '#e6f1f5') #~ j = j + 1 class FileHunter(wx.Frame): def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, -1, title) self.splitter = wx.SplitterWindow(self, ID_SPLITTER, style=wx.SP_BORDER) self.splitter.SetMinimumPaneSize(50) p1 = MyListCtrl(self.splitter, -1) p2 = MyListCtrl(self.splitter, -1) self.splitter.SplitVertically(p1, p2) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_SPLITTER_DCLICK, self.OnDoubleClick, id=ID_SPLITTER) self.sizer2 = wx.BoxSizer(wx.HORIZONTAL) self.Bind(wx.EVT_BUTTON, self.OnExit, id=ID_EXIT) self.sizer = wx.BoxSizer(wx.VERTICAL) self.sizer.Add(self.splitter,1,wx.EXPAND) self.sizer.Add(self.sizer2,0,wx.EXPAND) self.SetSizer(self.sizer) size = wx.DisplaySize() self.SetSize(size) #~ self.sb = self.CreateStatusBar() #~ self.sb.SetStatusText(os.getcwd()) self.Center() self.Show(True) def OnExit(self,e): self.Close(True) def OnSize(self, event): size = self.GetSize() self.splitter.SetSashPosition(size.x / 2) #~ self.sb.SetStatusText(os.getcwd()) event.Skip() def OnDoubleClick(self, event): size = self.GetSize() self.splitter.SetSashPosition(size.x / 2) app = wx.App(0) FileHunter(None, -1, 'File Hunter') app.MainLoop()
#!/usr/bin/python # -*- coding: utf-8 -*- import wx class WinRegExp(wx.Frame): def __init__(self, parent, title): super(WinRegExp, self).__init__(parent, title=title, size=(640, 480)) self.InitUI() self.Centre() self.Show() def InitUI(self): panel = wx.Panel(self) # font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT) # font.SetPointSize(9) vbox = wx.BoxSizer(wx.VERTICAL) # Создаём вертикальный бокс # Создаём бокс с лейблом hbox1 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Label1 = wx.StaticText(panel, label=u'Регулярное выражение для поиска') # Создаём лейбл # Label1.SetFont(font) # Задаём шрифт hbox1.Add(Label1, flag=wx.RIGHT, border=8) # Добавляем лейбл в бокс vbox.Add(hbox1, flag=wx.LEFT | wx.TOP, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # vbox.Add(hbox1, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с полем ввода hbox2 = wx.BoxSizer(wx.HORIZONTAL) # Создаём 2-ой бокс input1 = wx.TextCtrl(panel) # Создаём поле ввода hbox2.Add(input1, proportion=1) # Добавляем поле ввода в бокс vbox.Add(hbox2, flag=wx.EXPAND|wx.LEFT|wx.RIGHT, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с лейблом hbox3 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Label2 = wx.StaticText(panel, label=u'Шаблон замены') # Создаём лейбл # Label2.SetFont(font) # Задаём шрифт hbox3.Add(Label2, flag=wx.RIGHT, border=8) # Добавляем лейбл в бокс vbox.Add(hbox3, flag=wx.LEFT | wx.TOP, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с полем ввода hbox4 = wx.BoxSizer(wx.HORIZONTAL) # Создаём 2-ой бокс input2 = wx.TextCtrl(panel) # Создаём поле ввода hbox4.Add(input2, proportion=1) # Добавляем поле ввода в бокс vbox.Add(hbox4, flag=wx.EXPAND|wx.LEFT|wx.RIGHT, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с лейблом hbox5 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Label3 = wx.StaticText(panel, label=u'Текст в котором поиск') # Создаём лейбл # Label3.SetFont(font) # Задаём шрифт hbox5.Add(Label3, flag=wx.RIGHT, border=8) # Добавляем лейбл в бокс vbox.Add(hbox5, flag=wx.LEFT | wx.TOP, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с окном редактирования hbox6 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Edit3 = wx.TextCtrl(panel, style=wx.TE_MULTILINE) # Создаём окно редактирования hbox6.Add(Edit3, proportion=1, flag=wx.EXPAND) vbox.Add(hbox6, proportion=1, flag=wx.LEFT|wx.RIGHT|wx.EXPAND, border=10) # Создаём бокс с лейблом hbox7 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Label4 = wx.StaticText(panel, label=u'Результат после обработки') # Создаём лейбл # Label4.SetFont(font) # Задаём шрифт hbox7.Add(Label4, flag=wx.RIGHT, border=8) # Добавляем лейбл в бокс vbox.Add(hbox7, flag=wx.LEFT | wx.TOP, border=10) # Добавляем бокс в вертикальный бокс с установками ресайза # Создаём бокс с окном редактирования hbox8 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс Edit4 = wx.TextCtrl(panel, style=wx.TE_MULTILINE) # Создаём окно редактирования hbox8.Add(Edit4, proportion=1, flag=wx.EXPAND) vbox.Add(hbox8, proportion=1, flag=wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.EXPAND, border=10) #~ vbox.Add((-1, 10)) # Создаём отступ vbox2 = wx.BoxSizer(wx.VERTICAL) # Создаём вертикальный бокс # Создаём бокс со списком hbox21 = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс listbox1 = wx.ListBox(panel, -1) # Создаём список hbox21.Add(listbox1, proportion=1, flag=wx.EXPAND) vbox2.Add(hbox21, proportion=1, flag=wx.TOP|wx.BOTTOM|wx.RIGHT|wx.EXPAND, border=10) # Создаём бокс с кнопкой hbox22 = wx.BoxSizer(wx.HORIZONTAL) btn1 = wx.Button(panel, label=u'Старт', size=(70, 30)) hbox22.Add(btn1) #~ hbox22.Add(btn1, flag=wx.LEFT|wx.BOTTOM, border=5) vbox2.Add(hbox22, flag=wx.ALIGN_RIGHT|wx.RIGHT, border=10) mhbox = wx.BoxSizer(wx.HORIZONTAL) # Создаём горизонтальный бокс mhbox.Add(vbox, proportion=3, flag=wx.EXPAND, border=0) mhbox.Add(vbox2, proportion=1, flag=wx.EXPAND, border=0) #~ panel.SetSizer(vbox) panel.SetSizer(mhbox) if __name__ == '__main__': app = wx.App() WinRegExp(None, title='RegExp') app.MainLoop()