
Python programiranje kao hobi


def check_frame(train, col_name = 'Age'):
if col_name == float:
return col_name == int
Napravim:
train.apply(check_frame)
dobijem:
PassengerId None
Survived None
Pclass None
Name None
Sex None
Age None
SibSp None
Parch None
Ticket None
Fare None
Cabin None
Embarked None
dtype: object
Samo da mi je shvatiti to i mogu hladno dalje. A stalno nalijećem na zid.

Evo ti primjer jedne funkcije, samo zamisli da si već importovao 'tweets_df' DataFrame, (inače je elegantnije i bolje kad funkcija ima return):
# Define count_entries()
def count_entries(df, col_name='lang'):
"""Return a dictionary with counts of
occurrences as value for each key."""
# Raise a ValueError if col_name is NOT in DataFrame
if col_name not in df.columns:
raise ValueError ('The DataFrame does not have a ' + col_name + ' column.')
# Initialize an empty dictionary: cols_count
cols_count = {}
# Extract column from DataFrame: col
col = df[col_name]
# Iterate over the column in DataFrame
for entry in col:
# If entry is in cols_count, add 1
if entry in cols_count.keys():
cols_count[entry] += 1
# Else add the entry to cols_count, set the value to 1
else:
cols_count[entry] = 1
# Return the cols_count dictionary
return cols_count
# Call count_entries(): result1
result1 = count_entries(tweets_df, 'lang')
# Print result1
print(result1)
Iskreno jako me buni ovaj tvoj primjer.

Meni prave problem funckije koje korisnik sam definira. Mučim se već mjesecima i nikako da mi sjedne. Neke funkcije samo definiram, ako su jednostavne, ali čim je nešto kompleksnije, evo problema.
Pritom muči me pitanje, zašto negdje samo koriste print, a negdje return:
def adder(x,y,z):
print("sum:",x+y+z)
adder(10,12,13)
zašto ovdje nema return?
Molio bih neko objašnjenje funkcija na način, totalno jednostavan, a da pokrije sve vezano za njih. Naprosto sam već očajan, za popizditi.
Inače radim sa Pandas dominantno, pa bih htio napisati funkciju koja će provjeriti cijelu tablicu, preskočiti object, float pretvoriti u int. Šta god da probam ne ide nikako.
Općenito govoreći, funkcija (u programiranju) je blok naredbi koji radi određenu zadaću i može vratiti rezultat. Stvaratelj programa odlučuje koje funkcije vraćaju rezultat.
U tvojoj funkciji nema "return" jer je program zamišljen tako da funkcija adder ispisuje zbroj tri broja.

def check_frame(train, col_name = 'Age'):
if col_name == float:
return col_name == int
Napravim:
train.apply(check_frame)
dobijem:
PassengerId None
Survived None
Pclass None
Name None
Sex None
Age None
SibSp None
Parch None
Ticket None
Fare None
Cabin None
Embarked None
dtype: object
Samo da mi je shvatiti to i mogu hladno dalje. A stalno nalijećem na zid.
Specifično za Python je da svaka funkcija uvijek vraća rezultat - ako funkcija dođe do kraja onda je rezultat None.
def check_frame(train, col_name = 'Age'):
if col_name == float:
return col_name == int
Tvoja funkcija uvijek vraća None jer onaj if nikad nije istinit pa se njegov return nikad neće izvršiti.

def check_frame(train, col_name = 'Age'):
if col_name == float:
return col_name == int
Napravim:
train.apply(check_frame)
dobijem:
PassengerId None
Survived None
Pclass None
Name None
Sex None
Age None
SibSp None
Parch None
Ticket None
Fare None
Cabin None
Embarked None
dtype: object
Samo da mi je shvatiti to i mogu hladno dalje. A stalno nalijećem na zid.
Specifično za Python je da svaka funkcija uvijek vraća rezultat - ako funkcija dođe do kraja onda je rezultat None.
def check_frame(train, col_name = 'Age'):
if col_name == float:
return col_name == int
Tvoja funkcija uvijek vraća None jer onaj if nikad nije istinit pa se njegov return nikad neće izvršiti.
Kako nije istinit, kada provjerom se utvrdi da je zapravo float npr: 38.0 i ako je float, pretvori u int i to je to.

Ne znam je li ovo bug ili ja negdje griješim...iako sam ovo 100 puta radio i nikada ne to nije zajebavalo.
Naime, učitam datoteku brojeva te je spremim u listu. Jednostavnom naredbom pokušavam parsati u integer i javlja ovaj error, iako se uspješno izvrši i stvarno promijeni tip podatka iz str u int. U čemu je problem?

Ne znam je li ovo bug ili ja negdje griješim...iako sam ovo 100 puta radio i nikada ne to nije zajebavalo.
Naime, učitam datoteku brojeva te je spremim u listu. Jednostavnom naredbom pokušavam parsati u integer i javlja ovaj error, iako se uspješno izvrši i stvarno promijeni tip podatka iz str u int. U čemu je problem?
Problem je što u pozivu metode split eksplicitno zadaješ parametar sep=' '. Tada postoje dva slučaja kad lista tmp sadrži prazan string:
- redak datoteke sadrži dva ili više razmaka u sredini
- redak datoteke je prazan string
>>> '1 2 3'.split(' ')
['1', '2', '', '', '3']
>>> ''.split(' ')
['']
Ako datoteka ima barem jedan ovakav redak tvoj program puca jer pokušavaš pretvoriti prazan string u int (invalid literal for int() with base 10: '')
Najjednostavnije rješenje je pozvati split bez sep parametra
>>> '1 2 3'.split()
['1', '2', '3']
>>> ''.split()
[]

Ako moze mala pomoc...
Dakle, imam
a=input('Unesi koliko novaca je potrosio Leo: ')
a=int(a)
b=input ('Unesi koliko novaca je potrosila Tea: ')
b=int(b)
p=a+b
print('Leo i Tea su zajedno potrosili ',p)
Kako izvesti da nakon izracuna doda jos Kn kraj broja?
Znaci, ovako ispadne a+b=c, a bilo bi super kad bi moglo ispasti a(kn) + b(kn) = c(kn)
Unaprijed hvala.

Ako moze mala pomoc...
Dakle, imam
a=input('Unesi koliko novaca je potrosio Leo: ')
a=int(a)
b=input ('Unesi koliko novaca je potrosila Tea: ')
b=int(b)
p=a+b
print('Leo i Tea su zajedno potrosili ',p)
Kako izvesti da nakon izracuna doda jos Kn kraj broja?
Znaci, ovako ispadne a+b=c, a bilo bi super kad bi moglo ispasti a(kn) + b(kn) = c(kn)
Unaprijed hvala.
a = int(input('Unesi koliko novaca je potrosio Leo: '))
b = int(input('Unesi koliko novaca je potrosila Tea: '))
p = a + b
print('Leo i Tea su zajedno potrosili ' + str(p) + ' kn')

ima nekto za preporucit literaturu za pocetnike? znam da mogu na youtubu naci brdo tutoriala, al cisto pitam ako netko zna nekog kvalitetnog
klinac slijedece godine pocinje sa computingom u skoli, a glavni dio ce biti python pa rekoh da ja krenem ranije ucit da mogu pomoc kad zapne

ima nekto za preporucit literaturu za pocetnike? znam da mogu na youtubu naci brdo tutoriala, al cisto pitam ako netko zna nekog kvalitetnog
klinac slijedece godine pocinje sa computingom u skoli, a glavni dio ce biti python pa rekoh da ja krenem ranije ucit da mogu pomoc kad zapne
Python je odlično zastupljen na Redditu.
Vidi ovo - https://www.reddit.com/r/learnpython/wiki/index
Popis knjiga poredan prema razini prethodnog znanja.


Da se nadovežem na kolegu forumaša FLes-a, mogu napisati da su te knjige tih autora dobro napisane i vrlo brzo te uvode u svijet programiranja.
Mislim na knjige :
- Rješavanje problema programiranjem u Pythonu
- Napredno rješavanje problema programiranjem u Pythonu
- Izrada primjenskih programa u Pythonu
Ako volite kodirati, topla preporuka.

Da, vidiš - skroz sam zaboravio na domaće autore.

Da ne otvaram novu temu - imam par pitanja oko Pythona.
Naime, trebao bi dobar (lagan za pisati) programski jezik za programiranje mikrokontrolera - čitanje ulaza, obrada podataka te slanje na izlaz, eventualno GUI ili prikaz podataka na LCD-u.
Stvari koje sam do sada radio izvođene su na PLC-u no javila se potreba za manjim (jeftinijim) rješenjem - razvoj.
Do sada imam dosta iskustva u “grafičkim” programskim jezicima (Labview, LAD...) te nešto u C-u.
Postoji opcija Arduino + C, ali sam čitao o MicroPythonu te mi se dosta sviđa.
Ima li tko iskustva s istim? Ili nekakve dobre knjige, stranice, primjere?

Evo jedan primjer da malo oživimo temu.
Zanimljiv zadatak može biti i bez funkcije (funkcija je samo blok koda koji možete (trebate) ponovno negdje iskoristiti):
#Get the name of the text file and open it
name = input ('Enter file:')
handle = open (name, 'r')
# Count word frequency
counts = dict()
for line in handle:
words = line.split()
for word in words:
counts[word] = counts.get(word, 0) + 1
#Find the most common word
bigcount = None
bigword = None
for word, count in counts.items():
if bigcount is None or count > bigcount:
bigword = word
bigcount = count
print(bigword, bigcount)

Zna li netko kako obojati grafički prozor u Pythonu da nije stalno bijela boja?
Hvala!

A u čemu ga praviš? Tkinter? Elementi imaju "background" ili "bg" parametar s kojim možeš zadati boju pozadine.

To razumijem i tako sam radio. No zanima me postoji li neki "jednostavniji" način?
Recimo crtam kružnicu u programskom prozoru i stavim color("red") i on crta crvenom bojom. Mogu li tako jednostavno promijeniti i pozadinu tipa bgcolor("boja") i da radi?
Znam da je u Small Basicu moglo tako nekako...
Evo ti primjer jedne funkcije, samo zamisli da si već importovao 'tweets_df' DataFrame, (inače je elegantnije i bolje kad funkcija ima return):
# Define count_entries()
def count_entries(df, col_name='lang'):
"""Return a dictionary with counts of
occurrences as value for each key."""
# Raise a ValueError if col_name is NOT in DataFrame
if col_name not in df.columns:
raise ValueError ('The DataFrame does not have a ' + col_name + ' column.')
# Initialize an empty dictionary: cols_count
cols_count = {}
# Extract column from DataFrame: col
col = df[col_name]
# Iterate over the column in DataFrame
for entry in col:
# If entry is in cols_count, add 1
if entry in cols_count.keys():
cols_count[entry] += 1
# Else add the entry to cols_count, set the value to 1
else:
cols_count[entry] = 1
# Return the cols_count dictionary
return cols_count
# Call count_entries(): result1
result1 = count_entries(tweets_df, 'lang')
# Print result1
print(result1)