Forum strony www.multipasko.pl [Regulamin]


Dodaj wpis w tym temacie
Spis tematów
Login:

Hasło:
Strona: 1 2
Wyślij wiadomość do admina

Przewiń wpisy ↓

Python - niedzielna szkółka programowania

2018-04-26 (21:31)

status te0dor
Data rejestracji: 2010-10-12
Ilość postów: 408

12696
wpis nr 1 164 667
[ CZCIONKA SPECJALNA ]

Witam.

Zaczynam temat - kurs programowania w python, gdzie wszyscy początkujący i zainteresowani tym językiem będa mogli zrobić pierwsze kroki w programowaniu.

Jest to łatwy język z wielką masą bibliotek zewnętrznych z niskim progiem wejścia.

A przede wszystkim zastąpicie Basica którego używacie do swoich programów prognostycznych.



Nie mam przemyślanej strategii i kierunku tych lekcji, więc będą to może wycinki kodów i pomysłów powiązanych ze sobą lub nie.



Lekcja 1. Środowisko programistyczne wstepniak



Generalnie najlepiej w programowaniu jako środowisko polecam Linuxa: Debian, Ubuntu lub Mint. Oczywiście Windows też się do tego nadaje, a szczególnie teraz gdy w Windows 10 możemy "w środku " zainstalować Linuxa i w konsoli używać komend linuxowych.

Python działa na każdym systemie, wiec tak samo uruchomisz go pod linuxem i windowsem.

Niestety pod Windowsem mogą pojawić sie problemy z przygotowaniem środowiska do działania skryptów. Po prostu pod Linuxem wszystko działa sprawnie raczej z marszu.



Instalacja Pythona pod Windowsem.

https://www.python.org/downloads/



Pod Linuxem jest już zaintalowany.



W czymś trzeba pisać te linijki kodu, do tego wystarczy zwykły notatnik no ale oczywiście jest masa narzędzi programistycznych które pomagają i są specjalnie do tego stworzone.



Swoją naukę programowania zaczynałem używając notepad++, dziś już wiem że to był hardcore



Każde oprogramowanie ma w sobie zestawy wtyczek pluginów które wzbogacają i ułatwiają pisanie kodu w w wybranym języku.



Poniżej lista środowisk programistycznych, które polecam.



Sublimetext 3 (linux,windows) - mój ulubiony

https://www.sublimetext.com/



Vim (linux)- najmniej ulubiony najczęściej używany gdy pracujesz w konsoli poprzez ssh na serverze.



Atom (linux,windows) - zbudowany na silniku chromium, podobny do sublimetext

https://atom.io/



NetBeans (linux, windows) - 2 środowisko gdy zaczynałem naukę programowania, obecnie już nie używam.



VisualCode (linux, windows) - podobne do sublime, masa wtyczek ...

https://code.visualstudio.com/



PyCharm (linux,windows) - rozbudowane IDE

https://www.jetbrains.com/



Programując w pythonie ważne jest by trzymać się odstępów / wcieć. Jest to plus jak i minus w tym języku. Początkujący będą przeklinać gdy trudno będzie utrzymywać odpowiednie odstępy. Konfiguruje sie odpowiednio środowisko, które automatycznie robi wcięcia. Zmusza to też do czytelniejszego / ładniejszego pisania kodu.



Nie ma sensu kopiować tu masy początkujących kursów o składni języka, ale na pewno trzeba to sobie przyswoić.



Na tę chwilę to tyle, ciekaw jestem czy po takim zaczepnym temacie ktoś spróbuje poświęcić czas na pythona i zainstaluje sobie jakieś IDE i popełni swoja pierwszą linijke kodu:



<code>

jakas_zmienna = "Hello, world"

print "%s" % jakas_zmienna

</code>

2018-04-26 (22:12)

status MLRandom
Data rejestracji: 2016-01-16
Ilość postów: 553

14699
wpis nr 1 164 690
[ CZCIONKA SPECJALNA ]

te0dor, zagraj w totka, bo odgadujesz moje najsekretniejsze potrzeby



Dorzucam od siebie: http://www.python.rk.edu.pl/w/p/podstawy/



Mam problem z mobilizacją do pythona, więc może z lekkim dopingiem będzie łatwiej



2018-04-29 (18:54)

status sindbad
Data rejestracji: 2008-10-13
Ilość postów: 20441

3794
wpis nr 1 165 162
[ CZCIONKA SPECJALNA ]

te0dor, ja jestem gotów.



A co z kompilacją skryptu.







Pozdrawiam
2018-04-30 (02:13)

status Zeolit
Data rejestracji: 2015-02-23
Ilość postów: 1622

14328
wpis nr 1 165 231
[ CZCIONKA SPECJALNA ]

teOdor



Fajny temat. Dla zainteresowanych fajna książka: Python. 14 twórczych projektów dla dociekliwych programistów. Autor: Venkitachalam Mahesh.



Są i inne. Sporo tego. Co do totka. Przedzierając się po różnych publikacjach można sobie coś w głowie poukładać. Czy to będą sieci neuronowe, rachunek prawdopodobieństwa i inne rzeczy, zawsze można utworzyć

scalak łączący to wszystko. Python? Otwarta droga. Czy ma wszystkie funkcje? Nie wiem.



Jeżeli coś rozkminie, to dam znać. Szczerze. Zależy mi na kasie. Choć z innej strony chciałbym roz...przyć to ustrojstwo zwane totkiem. Dla czystej satysfakcji. Głupia przypadłość. Tak mam.



Pozdrawiam
2018-04-30 (12:59)

status sindbad
Data rejestracji: 2008-10-13
Ilość postów: 20441

3794
wpis nr 1 165 304
[ CZCIONKA SPECJALNA ]

te0dor, kiedy będzie lekcja 2.

Zeolit, te0dor czyta się - te zero dor.

--- wpis edytowano 2018-04-30 13:02 ---

2018-05-01 (23:51)

status te0dor
Data rejestracji: 2010-10-12
Ilość postów: 408

12696
wpis nr 1 165 630
[ CZCIONKA SPECJALNA ]

Witam znowu,



3 zainteresowanych hoho, to całkiem sporo, tylko co teraz ?

Powinniśmy sobie postawić jakiś cel ... hmm ... rozwalić lotto O tak, ale niestety się nie da, za duży przekręt i nie tacy jak my próbowali. Co najwyżej możemy trochę pomarnować czas analizując numerki.



Mnie osobiście ciekawi temat EuroJackPot. Wiadomo, wszyscy oszukują, Polska od niedawna jest w EuroJackPot a tu nagle sporo trafień w naszym kraju. No po prostu opatrzność boska. To co w innych krajach przestali grać ?



Nasze lotto to wałek, bo dlaczego jeszcze nie ma lotto przez net ? bo nie potrzebne będą stoiska z kuponami rozsiane po całej mapie Polski ? no wzór naśladowania praca dla tysięcy osób.



Wg mnie totki boją się gry przez Internet bo przez net ludzie znajdą sposób na wyciąganie kasy tak że będzie im bardziej malało niż rosło ... no ale wtedy wprowadzą inny regulamin i zakręcą kurek. Takie moje prognozy co do naszego lotto. Po 2, automaty składające kupony są szybsze od ludzi i już tu systemy będą mogły przynieść realne rezultaty.





Żeby było ciekawie i może pożytecznie przeanalizujmy te EuroJackpot czy jest tam jakiś szyfr schemat , jakaś sensowna powtarzalność lub wielka kupa

Totalna amatorka, ale spróbujmy sprawdzić "temperature" losowanych numerów i na jej podstawie dobierzemy numery na nastepne losowanie. w 49s sprawdzało się bardzo ciekawie. Ale wiadomo, tam oszukują mniej lub wcale. Albo dają wygrać ludziom, nie to co u nas.





Co będzie nam potrzebne:



1. Ulubiony system operacyjny i edytor, wybieram linux i coklowiek, może byc vim, lub darmowy Atom

2. Musimy mieć źródło z wynikami losowań, albo jakąś zbiorczą bazę.

3. Wymyślić hipotezę i napisać algorytm doboru numerków (temperatura liczb)



Ale zanim to wszystko musimy przygotować środowisko virtualne dla naszego projektu.

Zakładam że robicie to w linuxie. Pod windowsem można zainstalowąć wirtualny system pod VirtualBoxem, sciagamy Ubuntu, czy Mint i instalujemy z obrazu. na Youtubach poełno tego jak zainstalować

https://www.virtualbox.org/



Gdy już mamy odpalonego linuxa, otwieramy terminal, czyli konsole. W linuxie dość często pracuje się w konsoli. Tworzymy folder dla naszego programu:



mkdir jackpot_prognozer



i wchodzimy do środka



cd jackpot_prognozer



Instalujemy kilka bibliotek jako root, pod linuxem to taki super admin co ma dostęp do wszystkiego. Powinien być tworzony na początku instalacji linuxa, wiec hasło do niego znacie



[sudo] apt install python-pip



instalujemy jako root to co pod linkiem:

https://virtualenv.pypa.io/en/stable/installation/



[sudo] pip install virtualenv



To co powyżej to taka biblioteka która tworzy virtualne środowisko specjalnie dla każdego projektu oddzielnie w wybranym katalogu. Po to by wszystkiego nie instalować do systemu, bo być może każdy projekt bedzie wymagał innych wersji różnych bibliotek. No nic, tak byc musi,



Gdy już virtualenv zainstalowaliśmy i jesteśmy w katalogu projektu wpisujemy komendę:



Wszystkie komendy wykonujemy z głównego katalogu projektu !!!!



przykładowa linijka z konsoli



te0dor@linux ~/jackpot_prognozer $ virtualenv env_prognozer



powinno pojawic sie cos takiego



Running virtualenv with interpreter /usr/bin/python2

New python executable in /home/te0dor/jackpot_prognozer/env_prognozer/bin/python2

Also creating executable in /home/te0dor/jackpot_prognozer/env_prognozer/bin/python

Installing setuptools, pkg_resources, pip, wheel...done.



Komenda ls - pokarze że powstał folder a w nim różności które nas nie beda interesowały



Nastepnie musimy aktywować te powstałe środowisko komendą :



source env_prognozer/bin/activate



wtedy zobaczymy w konsoli przed nazwa użytkownika aktualne aktywne środowisko



(env_prognozer) te0dor@linux ~/jackpot_prognozer $



instalujemy biblioteki pomocne w pracy



http://docs.python-requests.org/en/master/



pip install requests



https://www.crummy.com/software/BeautifulSoup/bs4/doc/



pip install beautifulsoup4



pierwsza biblioteka pozwoli wykonywac zapytania (jak przeglądarka)

druga biblioteka pomoże nam wybierać informacje ze stron



te dwie powyższe biblioteki sa potrzebne gdy nie mamy wyników EuroJackPot, a nie mamy ?

Jeśli wyniki mamy możemy zająć sie konstuowaniem naszego programu, musimy opracować metody które coś będa wykonywały i zamknąć to w klase naszego programu. Przy okazji liźniemy programowania obiektowego w pythonie,



Więc potrzeba nam wyników ... cdn

















--- wpis edytowano 2018-05-01 23:54 ---

2018-05-02 (00:14)

status Zeolit
Data rejestracji: 2015-02-23
Ilość postów: 1622

14328
wpis nr 1 165 632
[ CZCIONKA SPECJALNA ]

te0dor



Czy masz może makro w Pythonie co pobiera wyniki ze strony lotto do arkusza kalkulacyjnego.

Coś korzystające z biblioteki pyexcel, lub innej.



Pozdrawiam
2018-05-02 (00:19)

status Zeolit
Data rejestracji: 2015-02-23
Ilość postów: 1622

14328
wpis nr 1 165 633
[ CZCIONKA SPECJALNA ]

te0dor



A tak z innej beczki. Czy masz jakiś algorytm co by wypluł te liczby. Zarys, metodę.

No generalnie pomysł. Pytam z ciekawości.



Bo obcy program tego nie da. No taka przypadłość.



Pozdrawiam
2018-05-02 (00:27)

status te0dor
Data rejestracji: 2010-10-12
Ilość postów: 408

12696
wpis nr 1 165 636
[ CZCIONKA SPECJALNA ]

W tym małym kursie chce rozpisać jak se pobrac te wyniki, chyba że mamy gotowa baze, to przejdziemy do robienia algorytmu doboru wg temperatur itp.



A jeśli nie mamy trzeba by napisać te jak określiłeś "makro" by pobierało wyniki.

Mam 49s i nasze Keno baze wyników aktualizowaną co 1 minutę



Baza jeckpot na naszym lotto jest nie pełna, wiec trochę szkoda czasu pisac kod pod nasze lotto.

Znacie link do losowan EuroJackPot pełnej bazy ?



Tak pomysł mam na algorytm : ciepłe zimne liczby - kompletna bzdura ale można sprawdzić

--- wpis edytowano 2018-05-02 00:28 ---

2018-05-02 (00:30)

status edi8
Data rejestracji: 2007-04-03
Ilość postów: 41774

2623
wpis nr 1 165 637
[ CZCIONKA SPECJALNA ]

teOdor>>

tu masz opcje PDF, XLS i TXT w archiwum losowań tej gry:



http://www.lottology.com/europe/eurojackpot/?do=past-draws-archive

--- wpis edytowano 2018-05-02 00:32 ---

2018-05-02 (00:33)

status te0dor
Data rejestracji: 2010-10-12
Ilość postów: 408

12696
wpis nr 1 165 638
[ CZCIONKA SPECJALNA ]

dzięki edi, a i znalazłem stronę skąd można by pobierać



https://www.euro-jackpot.net/pl/archiwum-wynikow-2018
2018-05-02 (00:35)

status Zeolit
Data rejestracji: 2015-02-23
Ilość postów: 1622

14328
wpis nr 1 165 639
[ CZCIONKA SPECJALNA ]

te0dor



Jeszcze odnośnie liczb. Czy chcesz je wyznaczać na podstawie temperatury? Gorące, zimne?

Czy to ma być odpowiedni wyznacznik co padnie? Głupie kryterium. No ale jakieś.



Nie chce mi się sprzedawać "modus operandi" na temat kulek. Wolałbym sam to zobaczyć.
2018-05-02 (00:39)

status Zeolit
Data rejestracji: 2015-02-23
Ilość postów: 1622

14328
wpis nr 1 165 640
[ CZCIONKA SPECJALNA ]

te0dor



No można sprawdzać. Po to są algorytmy żeby je badać.

Tylko wątpię aby ciepłe i zimne dały odpowiedni wynik. Sceptycyzm mi się włączył.



Pozdrawiam
2018-05-02 (01:00)

status te0dor
Data rejestracji: 2010-10-12
Ilość postów: 408

12696
wpis nr 1 165 641
[ CZCIONKA SPECJALNA ]

to i tak zabawa

chce wdrożyć taka metode poszukiwań, jak opisana 10 lat temu na forum



https://forum.idg.pl/topic/82878-makra-i-funkcje-lotto-w-excelu/#entry763213
2018-05-03 (01:51)

status Zeolit
Data rejestracji: 2015-02-23
Ilość postów: 1622

14328
wpis nr 1 165 833
[ CZCIONKA SPECJALNA ]

te0dor



I tak jestem podziwu, że Ci się chce. Ale czy pomysł Arka76 będzie trafny?

Arek udzielał się tu na forum. Jednak czy jego myśl się sprawdzi?



Z mojej strony. Obecnie mam inne formy zarobkowe. Jednak strzał dużej gotówki dużo by zmienił.

Nie wiem czy to forum tak ma. Czasem zniechęca. Czasem niszczy. Ale czasem daje pomysł.



Nawet nie na grę. Dziwne. Daje pomysły na inne programy. No i znowu zaczynają się schody.

Bo programy mogą dać 5mln euro, 20mln euro, 100mln euro itd.. Kasa o Niebo większa, niż analiza Totka.



Co wybrać? Totalne jaja.



te0dor



Czasami się zastanawiam? W co brnąć?



Python? Uczcie się go. Jak każdego języka programowania.

Jednak do tego dołączcie inną dziedzinę wiedzy. Jedno + drugie. Wymierny sukces murowany.

Sam mam znajomego, co na własnym sofcie trzepie przyzwoitą kasę. Dom, rodzina itp.

Czasem głupi pomysł a daje więcej satysfakcji niż nie jedna wygrana. Finansowo.

Bo czy milion w jeden dzień, miesiąc, rok? I tak to dla niektórych kosmos.



Pozdrawiam
2018-05-03 (02:04)

status te0dor
Data rejestracji: 2010-10-12
Ilość postów: 408

12696
wpis nr 1 165 834
[ CZCIONKA SPECJALNA ]

#!/usr/bin/python

# -*- coding: utf-8 -*-



import os

import requests

import sqlite3

from datetime import datetime

from sqlite3 import Error





DATABASE_DIR = 'bazy'

DATABASE_FILENAME = 'euro-jackpot.db'

ARCHIVE_DATA_LIST = [2012, 2012, 2013, 2014, 2015, 2016, 2017, 2018]

DATABASE_CSV_FILENAME = 'euro-jack-pot.csv'





class EuroJackPot(object):

"""docstring for EuroJackPot"""

def __init__(self, config={}):

# super(EuroJackPot, self).__init__()

self.config = config

self.create_database()

if self.config['aktualizacja']:

print "Trwa pobieranie wyników i przygotowanie bazy"

self.download_results()

self.save_results()



def create_connection(self, db_file=None):

""" create a database connection to a database that resides

in the memory

"""



path = os.path.dirname(os.path.abspath(__file__))

path = "%s/%s" % (path, db_file)



try:

conn = sqlite3.connect(path)

return conn

# print(sqlite3.version)

except Error as e:

print(e)

conn.close()

return None



def run_sql(self, conn, sql, data=None, many=False):

try:

c = conn.cursor()

if data:

if many:

c.executemany(sql, data)

else:

c.execute(sql, data)

else:

c.execute(sql)

conn.commit()

return c.fetchall()

except Error as e:

print(e)

conn.close()

return None



def clear_database(self):

conn = self.create_connection(DATABASE_FILENAME)

if conn is not None:

self.run_sql(conn, """ DROP TABLE draws; """)

conn.close()

else:

print("Error! cannot clear_database.")



def create_database(self):



draw_table_sql = """ CREATE TABLE IF NOT EXISTS draws (

id integer PRIMARY KEY,

draw_date varchar(10) NOT NULL,

n1 integer NOT NULL,

n2 integer NOT NULL,

n3 integer NOT NULL,

n4 integer NOT NULL,

n5 integer NOT NULL,

ne1 integer NOT NULL,

ne2 integer NOT NULL

); """

conn = self.create_connection(DATABASE_FILENAME)

if conn is not None:

self.run_sql(conn, draw_table_sql)

conn.close()

else:

print("Error! cannot create the database connection.")



def insert_database(self, sql, data, many=False):

conn = self.create_connection(DATABASE_FILENAME)

if conn is not None:

self.run_sql(conn, sql, data, many)

conn.close()

else:

print("Error! cannot create the database connection.")



def download_results(self):



for year in ARCHIVE_DATA_LIST:

url = 'http://www.lottology.com/europe/eurojackpot/?do=past-draws-archive&tab=&as=TXT&year=%s&group_num_selector=selected&numbers_selector_mode=add&numbers_selected=' % year

response = requests.get(url)

if response.status_code == 200:

response.raw.decode_content = True

data = response.content

path = "%s/euro-jack-pot-%s" % (DATABASE_DIR, year)

with open(path, 'w') as file:

file.write(data)



def save_results(self):

"""

Zapisuje wyniki do bazy sqlite3 i pliku CSV.

"""

draws_base = []

for year in ARCHIVE_DATA_LIST: #:1

path = "%s/euro-jack-pot-%s" % (DATABASE_DIR, year)



with open(path, 'r') as file:

lines = reversed(file.readlines())

for line in lines:

try:

parts = line.split('\t')

draw_date = datetime.strptime(parts[0].strip(), '%d %B %Y').date()

n1 = parts[1].strip()

n2 = parts[2].strip()

n3 = parts[3].strip()

n4 = parts[4].strip()

n5 = parts[5].strip()

ne1 = parts[6].strip()

ne2 = parts[7].strip()

draws_base.append((str(draw_date), int(n1), int(n2), int(n3), int(n4), int(n5), int(ne1), int(ne2)))

except ValueError:

pass



path = "%s/%s" % (DATABASE_DIR, DATABASE_CSV_FILENAME)

self.clear_database()

self.create_database()



with open(path, 'w') as file:

file.write('')



sql = 'insert into draws(draw_date,n1,n2,n3,n4,n5,ne1,ne2) values (?,?,?,?,?,?,?,?)'

self.insert_database(sql, draws_base, True)



for draw in draws_base:

with open(path, 'a') as file:

file.write("%s\n" % ';'.join(map(str, draw)))





config = {

'aktualizacja': True,

'ilosc_losowan_do_analizy': 100,

'ilosc_losowan_wstecz': 10

}



euro = EuroJackPot(config)

2018-05-03 (02:13)

status te0dor
Data rejestracji: 2010-10-12
Ilość postów: 408

12696
wpis nr 1 165 835
[ CZCIONKA SPECJALNA ]

cześć pierwsza programu: Pobieranie wyników i tworzenie odpowiednich plików bazowych i zwykły CSV



a poniżej wszystko spakowane



http://catshare.net/4pkaMpWK5wGwJXth/euro-prognozer.zip
2018-05-03 (02:53)

status Zeolit
Data rejestracji: 2015-02-23
Ilość postów: 1622

14328
wpis nr 1 165 836
[ CZCIONKA SPECJALNA ]

te0dor



Napisałeś, że chcesz rozkminiać EuroJackPot.

A czy masz może pomysł na makro ( python ) pobierające dane z naszego rodzinnego lotto.

Wszystkie wyniki mini, dużego itp. Format csv, excel itp.



Czasami nachodzi mnie taka refleksja. Czy na podstawie tych wszystkich doświadczeń, spostrzeżeń,

nie dałoby się zrobić coś innego. Kasa podobna, a może większa. Pomysły? A różne. Socjotechnika,

psychologia, data mining i inne formy. Informacja, wiedza itp. Fake news? A może na odwrót. Filtr?



Pomysły?



Kasę można trzepać w różny sposób.



Jednak kurs nauka pythona każdemu pomoże. Szacun.



Kilka pozycji:



Python. Wprowadzenie. Wydanie IV Autor: Mark Lutz



Python. Instrukcje dla programisty Autor: Eric Matthes



Python. Uczenie maszynowe Autor: Sebastian Raschka



Python. Podstawy nauki o danych. Wydanie II Autorzy: Alberto Boschetti, Luca Massaron



Python. 14 twórczych projektów dla dociekliwych programistów Autor: Mahesh Venkitachalam



i pełno innych wydań.



Czasem w jednej książce jest coś opisane, w innej ubrane to coś w inne słowa. Czasem inna metoda, sposób.



te0dor: Zastanów się. Czy nie dałbyś rady napisać programu, który dałby Tobie kasę inną niż z Totka.

Wredne pytanie. Wiem. Ale czasem rozkminiając jeden temat natrafiasz na inny. No i powstaje dylemat. KASA, KASA, KASA itd.



Pozdrawiam
2018-05-03 (10:47)

status te0dor
Data rejestracji: 2010-10-12
Ilość postów: 408

12696
wpis nr 1 165 884
[ CZCIONKA SPECJALNA ]

pewnie ze dam rade. a maaz zlecenie na program ? 😉 wystawiam fakture vat.
2018-05-04 (23:27)

status te0dor
Data rejestracji: 2010-10-12
Ilość postów: 408

12696
wpis nr 1 166 222
[ CZCIONKA SPECJALNA ]

Zatem analiza losowań przy konfiguracji



config = {

'aktualizacja': False,

'ilosc_losowan_do_analizy': 100,

'ilosc_losowan_wstecz': 1,

'symulacja_dla_ilu_losowan_wstecz': 100

}

https://snag.gy/a9yLcx.jpg







numery sa prognozowane na nastepne losowanie, i ustawione wg temperatury od gorącej do zimnej.

zanzaczone na zielone to te ktore sa wylosowane w danym losowaniu.

czy można cos tu dostrzec ?



można by brać pewną część ciągu (koniec lub początek) i tylko stamtąd wybierać numery na losowanie.



Aha, brane pod uwagę sa tylko 5 pierwszych numerów

--- wpis edytowano 2018-05-04 23:34 ---

| Dodaj wpis w tym temacie | Spis tematów | Wyniki lottoStrona: 1 2
Wyślij wiadomość do admina