Slazem se sa djoka_i, poslusaj ga.
Zadaci za wannabe pythoniste
Zaključano
Zakačeno
Mislim da sam pisanje fiunkcija utrenirao, jer na ovom jednom sajtu rešenja su isključivo u formi funkcija.
Neki od zadataka koje sam rešio do sad su ovde .
Mada još toliko nisam ni stavljao na Github.
Da, u pravu si, trebalo bi da oživim projekat rečnika.
Do sada sam od funkcija napravio pretraživanje, dodavanje nove reči i ispravljanje postojećih.
No, to je još uvek skript, ako se to tako zove. Probaću da napravim aplikaciju tako da pretraživanje ide na komandnoj liniji.
Tako da funkcioniše:
> python recnik --prevedi room
> soba, prostorija
Probaću takođe da napravim da ide u oba smera pretraživanje i prevod.
Ako me posluži sreća junačka da sve to isplivam, onda u sledećoj fazi da pravim grafički interfejs.
Đoko, šta misliš o planu? To taman do kraja godine da slistim
Neki od zadataka koje sam rešio do sad su ovde .
Mada još toliko nisam ni stavljao na Github.
Da, u pravu si, trebalo bi da oživim projekat rečnika.
Do sada sam od funkcija napravio pretraživanje, dodavanje nove reči i ispravljanje postojećih.
No, to je još uvek skript, ako se to tako zove. Probaću da napravim aplikaciju tako da pretraživanje ide na komandnoj liniji.
Tako da funkcioniše:
> python recnik --prevedi room
> soba, prostorija
Probaću takođe da napravim da ide u oba smera pretraživanje i prevod.
Ako me posluži sreća junačka da sve to isplivam, onda u sledećoj fazi da pravim grafički interfejs.
Đoko, šta misliš o planu? To taman do kraja godine da slistim
Grafički interfejs ostavi za nikad. Suviše je komplikovano za tebe, koji si još uvek na prvom programskom jeziku u životu, da se baviš Windows GUI programiranjem.
Koncentriši se na rad iz komandne linije.
Ako želiš nekakvo grafičko okruženje, bolje da to bude web, pretraživač će ti odraditi gomilu stvari, koje ti za sada ne znaš.
Za web ti treba da naučiš, ili obnoviš, znanje HTML, CSS, a onda ide Django.
Naravno, ako ne želiš da ti Django radi kao web server moraćeš da naučiš kako da napraviš WAMP okruženje i nešto malo Apache konfiguracije. Osim ako ne odlučiš da umesto Apache stavih nginx, onda moraš da naučiš kako da ga instaliraš i konfigurišeš. Neizostavno, treba da naučiš SQL i da instaliraš i postaviš MySQL bazu.
Ako misliš da je sve to komplikovano, pa Windows GUI je još komplikovaniji...
Uzgred, ja kao profesionalac, koristim Excel kada treba da napravim nešto na brzinu, a da ima grafiku, da se ne bih zamarao sa GUI na Windowsu.
Kada sam prvi put morao da napravim nešto za Windows okruženje u C++, bilo je tako zamorno, da sam sve svoje module napravio na SCOUnixu, a na windowsu ih samo kompajlirao. Toliko je bilo zamorno da postavim okruženje za rad u VisualStudio IDE, da sam lepo, ko čovek, sve odradio samo pomoću vi editora, pa onda liferovao svoje fajlove na integracioni server.
Koncentriši se na rad iz komandne linije.
Ako želiš nekakvo grafičko okruženje, bolje da to bude web, pretraživač će ti odraditi gomilu stvari, koje ti za sada ne znaš.
Za web ti treba da naučiš, ili obnoviš, znanje HTML, CSS, a onda ide Django.
Naravno, ako ne želiš da ti Django radi kao web server moraćeš da naučiš kako da napraviš WAMP okruženje i nešto malo Apache konfiguracije. Osim ako ne odlučiš da umesto Apache stavih nginx, onda moraš da naučiš kako da ga instaliraš i konfigurišeš. Neizostavno, treba da naučiš SQL i da instaliraš i postaviš MySQL bazu.
Ako misliš da je sve to komplikovano, pa Windows GUI je još komplikovaniji...
Uzgred, ja kao profesionalac, koristim Excel kada treba da napravim nešto na brzinu, a da ima grafiku, da se ne bih zamarao sa GUI na Windowsu.
Kada sam prvi put morao da napravim nešto za Windows okruženje u C++, bilo je tako zamorno, da sam sve svoje module napravio na SCOUnixu, a na windowsu ih samo kompajlirao. Toliko je bilo zamorno da postavim okruženje za rad u VisualStudio IDE, da sam lepo, ko čovek, sve odradio samo pomoću vi editora, pa onda liferovao svoje fajlove na integracioni server.
Pa ćemu onda služi tkinter?
Da, jedna od narednih faza bi bilo da taj rečnik stavim i na neki sajt, da bude online.
Za sada znam malo HTML. I to je nešto :)
Da, jedna od narednih faza bi bilo da taj rečnik stavim i na neki sajt, da bude online.
Za sada znam malo HTML. I to je nešto :)
Pa dobro ne mora da se zeza sa win32 api u pythonu. Verujem da i pygtk vrsi posao dobro.
Generalno, mnogo će lakše naći postao ako razvija neki Web GUI (neki od framework-a ili čist JS), a ako solidno nauči programiranje, neki backend nije toliki problem. U nekoliko firmi u kojima znam programere, kažu da su Java i .NET tu negde, s tim što raste broj poslova za .NET Core, ali se traže i nodeJS, php, itd.
Uglavnom se ide na odvajanje front/back, retki su oni koji znaju i jedno i drugo na istom nivou...
HTML, CSS, JS mora da nauči osnove za Web, ali ako nije cilj rad sa implementacijom dizajna, onda neki od FW-a (react, vue, angular...).
Uglavnom se ide na odvajanje front/back, retki su oni koji znaju i jedno i drugo na istom nivou...
HTML, CSS, JS mora da nauči osnove za Web, ali ako nije cilj rad sa implementacijom dizajna, onda neki od FW-a (react, vue, angular...).
Potpis
Blessed are those who can laugh at themselves, for they shall never cease to be amused.
Cek da prvo nauci da programira, onda ce lako naci posao.... pisanje GUI programa je deo tog procesa.
To sto vecina firmi radi web, i poznatu kombinaciju jezika, ne mora da znaci da bas mora da se koncentrise
na to sada. Nije krenuo ni sa JS, ni sa .NET, ni sa Java, ni PHP, nego sa Pythonom.
To sto vecina firmi radi web, i poznatu kombinaciju jezika, ne mora da znaci da bas mora da se koncentrise
na to sada. Nije krenuo ni sa JS, ni sa .NET, ni sa Java, ni PHP, nego sa Pythonom.
Da, nego to je reakcija da mu Python nije baš dobar izbor ako hoće da radi GUI. OK ako neko odlično zna Python pa mu je lakše tako.
Python je ipak pogodniji za neke druge stvari, pa ako je nekome primarno to u čemu je Python relativno dominantan, onda OK.
Python je ipak pogodniji za neke druge stvari, pa ako je nekome primarno to u čemu je Python relativno dominantan, onda OK.
Potpis
Blessed are those who can laugh at themselves, for they shall never cease to be amused.
Pa ima ovo recimo https://github.com/Nicotine-Plus/nicotine-plus
To koristim :P
Nek prouci kako su uradili, app je 100+ GUI Python
To koristim :P
Nek prouci kako su uradili, app je 100+ GUI Python
Đoko, u skladu sa tvojom sugestijom,
nova verzija rečnika je na temi "Pravljenje englesko-srpskog rečnika".
Pogledaj, molim te, pa javi kako dalje.
Hvala unapred.
A ovde novi zadatak broj 37:
# You have a text and a list of words. You need to check if the words in a list appear in the
# same order as in the given text.
# Cases you should expect while solving this challenge:
# word from the list is not in the text - your function should return False;
# any word can appear more than once in a text - use only the first one;
# two words are the same - your function should return False;
# the condition is case sensitive, which means 'hi' and 'Hi' are two different words.
# text includes only English letters and spaces
# Input: Two arguments. The first one is a given text, the second is a list of words.
# Output: A bool.
def words_order(text: str, words: list) -> bool:
# your code here
return False
if __name__ == '__main__':
print("Example:")
print(words_order('hi world im here', ['world', 'here']))
# These "asserts" are used for self-checking and not for an auto-testing
assert words_order('hi world im here', ['world', 'here']) == True
assert words_order('hi world im here', ['here', 'world']) == False
assert words_order('hi world im here', ['world']) == True
assert words_order('hi world im here', ['world', 'here', 'hi']) == False
assert words_order('hi world im here', ['world', 'im', 'here']) == True
assert words_order('hi world im here', ['world', 'hi', 'here']) == False
assert words_order('hi world im here', ['world', 'world']) == False
assert words_order('hi world im here', ['country', 'world']) == False
assert words_order('hi world im here', ['wo', 'rld']) == False
assert words_order('', ['world', 'here']) == False
Ja sam uradio nešto ovako:
ali mi javlja grešku na proveri
assert words_order('hi world im here', ['country', 'world']) == False
Nije mi jasno zašto to treba da bude False.
Kod mene je True, jer je jedina reč koja se javlja u tekstu, pa je time automatski redosled OK.
nova verzija rečnika je na temi "Pravljenje englesko-srpskog rečnika".
Pogledaj, molim te, pa javi kako dalje.
Hvala unapred.
A ovde novi zadatak broj 37:
# You have a text and a list of words. You need to check if the words in a list appear in the
# same order as in the given text.
# Cases you should expect while solving this challenge:
# word from the list is not in the text - your function should return False;
# any word can appear more than once in a text - use only the first one;
# two words are the same - your function should return False;
# the condition is case sensitive, which means 'hi' and 'Hi' are two different words.
# text includes only English letters and spaces
# Input: Two arguments. The first one is a given text, the second is a list of words.
# Output: A bool.
def words_order(text: str, words: list) -> bool:
# your code here
return False
if __name__ == '__main__':
print("Example:")
print(words_order('hi world im here', ['world', 'here']))
# These "asserts" are used for self-checking and not for an auto-testing
assert words_order('hi world im here', ['world', 'here']) == True
assert words_order('hi world im here', ['here', 'world']) == False
assert words_order('hi world im here', ['world']) == True
assert words_order('hi world im here', ['world', 'here', 'hi']) == False
assert words_order('hi world im here', ['world', 'im', 'here']) == True
assert words_order('hi world im here', ['world', 'hi', 'here']) == False
assert words_order('hi world im here', ['world', 'world']) == False
assert words_order('hi world im here', ['country', 'world']) == False
assert words_order('hi world im here', ['wo', 'rld']) == False
assert words_order('', ['world', 'here']) == False
Ja sam uradio nešto ovako:
Code:
import collections
def words_order(text: str, words: list) -> bool:
reci = text.split()
dic_text = dict(enumerate(reci))
dic_words = dict(enumerate(words))
indexi = []
for i in collections.Counter(words).values():
if i > 1:
return False
for i in dic_words.values():
for ind, rec in dic_text.items():
if i in rec:
indexi.append(ind)
indexi1 = sorted(indexi)
if indexi == indexi1:
return True
else:
return False
if __name__ == '__main__':
print("Example:")
print(words_order('hi world im here', ['world']))
import collections
def words_order(text: str, words: list) -> bool:
reci = text.split()
dic_text = dict(enumerate(reci))
dic_words = dict(enumerate(words))
indexi = []
for i in collections.Counter(words).values():
if i > 1:
return False
for i in dic_words.values():
for ind, rec in dic_text.items():
if i in rec:
indexi.append(ind)
indexi1 = sorted(indexi)
if indexi == indexi1:
return True
else:
return False
if __name__ == '__main__':
print("Example:")
print(words_order('hi world im here', ['world']))
ali mi javlja grešku na proveri
assert words_order('hi world im here', ['country', 'world']) == False
Nije mi jasno zašto to treba da bude False.
Kod mene je True, jer je jedina reč koja se javlja u tekstu, pa je time automatski redosled OK.
"Nije mi jasno zašto to treba da bude False."
Pa ocigledno lista reci mora u tom redosledu da se pojavi u stringu.
Pa ocigledno lista reci mora u tom redosledu da se pojavi u stringu.
U tome je stvar što ne mora.
U listi mogu biti reči koje se ne pojavljuju u stringu.
Ali ako u listi ima više reči koje se pojavljuju, treba proveriti da li je njihov redosed isti kao u stringu.
Mene ovaj slučaj buni zato što ima samo jedna reč koja se pojavljuje, te je otuda redosled OK, pošto je jedina.
U listi mogu biti reči koje se ne pojavljuju u stringu.
Ali ako u listi ima više reči koje se pojavljuju, treba proveriti da li je njihov redosed isti kao u stringu.
Mene ovaj slučaj buni zato što ima samo jedna reč koja se pojavljuje, te je otuda redosled OK, pošto je jedina.
"U listi mogu biti reči koje se ne pojavljuju u stringu."
Mislim da to nisi dobro shvatio. Proveri primere ulaza i sta vraca.
Mislim da to nisi dobro shvatio. Proveri primere ulaza i sta vraca.
Da, moguće je da nisam dobro ovo razumeo:
# word from the list is not in the text - your function should return False;
ako znači da svaka reč iz liste mora biti u stringu i da ako jedna nije, automatski je false
# word from the list is not in the text - your function should return False;
ako znači da svaka reč iz liste mora biti u stringu i da ako jedna nije, automatski je false
Pise lepo ako jedna rec iz liste nije u tekstu, onda false.
Citat:
Generalno, mnogo će lakše naći postao ako razvija neki Web GUI (neki od framework-a ili čist JS), a ako solidno nauči programiranje, neki backend nije toliki problem. U nekoliko firmi u kojima znam programere, kažu da su Java i .NET tu negde, s tim što raste broj poslova za .NET Core, ali se traže i nodeJS, php, itd.
Šta fali Pythonu? Ima veliki izbor Python web frameworka, najpoznatiji su svakako Django i Flask, ali ima i dosta drugih. Isto tako i za razvoj GUI aplikacija.
Za razvoj Web aplikacija mu danas nije potrebno neko veliko znanje HTMLa i CSSa, ima i za tu namenu dosta frameworkova, npr. Bootstrap pa je dovoljno neko osnovno znanje. Za web server, Django i Flask dolaze podrazumevano sa istim tako da ni tu nije potrebno neko podešavanje, dovoljno je pokrenuti run server komandu, ili na primer sa gunicorn koji je lakši za podešavanje od Nginxa ili Apachea. Za bazu podataka, Django podrazumevano dolazi sa ORM podrškom za različite baze (SQLite, PostgreSQL, MariaDB, MySQL, Oracle), dok je za Flask potrebno instalirati npr. Flask-SQLAlchemy, tako da nije potrebno poznavanje SQL jezika za rad sa bazama.
Evo kao primer, ja sm onaj covid19 python skript jednostavno konvertovao u Web app uz pomoć navedenih tehnologija.
https://covid19inf.herokuapp.com/
Takođe, kome treba api, neka pogleda API dropdown menu. ;) Na primer:
Code:
curl https://covid19inf.herokuapp.com/api/latest/
curl https://covid19inf.herokuapp.com/api/\?date\=05-02-2020
curl https://covid19inf.herokuapp.com/api/latest/
curl https://covid19inf.herokuapp.com/api/\?date\=05-02-2020
Pogledaj ovu stranicu:
https://thispointer.com/python...here-are-duplicates-in-a-list/
U svom rešenju upotrebio si najgori algoritam za pronalaženje duplikata.
U tvom konkretnom slučaju to i nije toliko bitno, u pitanju su kratke liste i efikasnost ne igra neku veliku ulogu.
Međutim, potrebno je da, zbog učenja, pišeš EFIKASNE programe. Kao što je jedan moj profestor sa ETF-a govorio "Program mora da se završi za života programera". Uvek je voleo da spominje programere sa Matematičkog fakulteta koji pišu programe koji se završavaju posle konačnog broja koraka, a ne brzo...
https://thispointer.com/python...here-are-duplicates-in-a-list/
U svom rešenju upotrebio si najgori algoritam za pronalaženje duplikata.
U tvom konkretnom slučaju to i nije toliko bitno, u pitanju su kratke liste i efikasnost ne igra neku veliku ulogu.
Međutim, potrebno je da, zbog učenja, pišeš EFIKASNE programe. Kao što je jedan moj profestor sa ETF-a govorio "Program mora da se završi za života programera". Uvek je voleo da spominje programere sa Matematičkog fakulteta koji pišu programe koji se završavaju posle konačnog broja koraka, a ne brzo...
Kolko vidim koristi hash tabelu, sto je efikacnije od sorta u svakom slucaju. Mozda
jedino sto tu efikasnije moze da se uradi je da ne formira komplet, nego umesto counter,
da koristi obicnu, pa izadje odmah na pojavu prvog duplikata. Koliko kapiram
fora je da se vrati False ukoliko ima duplikata u listi?
edit:
no ovo trazenje reci u redosledu ima mesta za improvement svakako.
jedino sto tu efikasnije moze da se uradi je da ne formira komplet, nego umesto counter,
da koristi obicnu, pa izadje odmah na pojavu prvog duplikata. Koliko kapiram
fora je da se vrati False ukoliko ima duplikata u listi?
edit:
no ovo trazenje reci u redosledu ima mesta za improvement svakako.
Zadatak broj 38, za koji nemam ideju kako ga rešiti, a da pohvata sve ove mavedene slučajeve.
Ako neko ima, eto prilike da nešto naučim.
# You are given a list of files. You need to sort this list by file extension. The files with the same extestion should be sorted by name.
#
# Some possible cases:
# Filename cannot be an empty string;
# Files without extensions should go before the files with extensions;
# Filename ".config" has an empty extenstion and name ".config";
# Filename "config." has an empty extenstion and name "config.";
# Filename "table.imp.xls" has an extesntion "xls" and name "table.imp";
# Filename ".imp.xls" has extension "xls" and name ".imp".
#
# Input: A list of filenames.
# Output: A list of filenames.
Ako neko ima, eto prilike da nešto naučim.
# You are given a list of files. You need to sort this list by file extension. The files with the same extestion should be sorted by name.
#
# Some possible cases:
# Filename cannot be an empty string;
# Files without extensions should go before the files with extensions;
# Filename ".config" has an empty extenstion and name ".config";
# Filename "config." has an empty extenstion and name "config.";
# Filename "table.imp.xls" has an extesntion "xls" and name "table.imp";
# Filename ".imp.xls" has extension "xls" and name ".imp".
#
# Input: A list of filenames.
# Output: A list of filenames.
Code:
from typing import List
def sort_by_ext(files: List[str]) -> List[str]:
# your code here
return files
if __name__ == '__main__':
print("Example:")
print(sort_by_ext(['1.cad', '1.bat', '1.aa']))
# These "asserts" are used for self-checking and not for an auto-testing
assert sort_by_ext(['1.cad', '1.bat', '1.aa']) == ['1.aa', '1.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '2.bat']) == ['1.aa', '1.bat', '2.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '.bat']) == ['.bat', '1.aa', '1.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '.aa', '.bat']) == ['.aa', '.bat', '1.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.', '1.aa']) == ['1.', '1.aa', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '1.aa.doc']) == ['1.aa', '1.bat', '1.cad', '1.aa.doc']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '.aa.doc']) == ['1.aa', '1.bat', '1.cad', '.aa.doc']
from typing import List
def sort_by_ext(files: List[str]) -> List[str]:
# your code here
return files
if __name__ == '__main__':
print("Example:")
print(sort_by_ext(['1.cad', '1.bat', '1.aa']))
# These "asserts" are used for self-checking and not for an auto-testing
assert sort_by_ext(['1.cad', '1.bat', '1.aa']) == ['1.aa', '1.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '2.bat']) == ['1.aa', '1.bat', '2.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '.bat']) == ['.bat', '1.aa', '1.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '.aa', '.bat']) == ['.aa', '.bat', '1.bat', '1.cad']
assert sort_by_ext(['1.cad', '1.', '1.aa']) == ['1.', '1.aa', '1.cad']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '1.aa.doc']) == ['1.aa', '1.bat', '1.cad', '1.aa.doc']
assert sort_by_ext(['1.cad', '1.bat', '1.aa', '.aa.doc']) == ['1.aa', '1.bat', '1.cad', '.aa.doc']