- Moram riješiti ovaj zadatak, ali ne razumijem kako da u pythonu pročitam zadnji red, odvojim ga dalje da dobijem zadnji element tog reda i onda to usporedim sa korisničkim unosom. Znam jedino napisat kratki kod koji čita file,podijeli file po retcima i printa zadnji redak.
- Napišite program koji učitava datoteku s popisom korisnika /etc/passwd. U toj su datoteci pojedini elementi retka odvojeni znakom dvotočke, a posljednji element je zadana ljuska korisnika koja se pokreće nakon njegove prijave. Program traži unos ljuske (npr. /bin/bash ili /usr/sbin/nologin), a zatim se u tekstualnu datoteku spremaju po jedno u redu imena korisnika kojima je to zadana ljuska korisnika.
Python zadatak pomoć
Ne treba ti zadnji red, nego zadnji podatak svakog retka. Treba ti i prvi podatak svakog retka (ime korisnika).
shell = input('Unesi ljusku:')
with open('/etc/passwd') as passwd, open('output.txt', 'w') as output:
for line in passwd:
info = line.rstrip().split(':')
if info[-1] == shell:
output.write(info[0] + '\n')
hvala puno, skroz kirvo sam procitao zadatak
Pozdrav.
Počinjem učiti Python i nije mi jasan ovaj primjer. Nastojat ću precizno ubaciti ss...
EDIT: Nadam se da je čitljivo. Nastaje problem nakon retka c=a+b
Nedostaju ti razmaci na početku retka "c=a+b"
>>> def zbroj(a, b):
... c=a+b
File "<stdin>", line 2
c=a+b
^
IndentationError: expected an indented block
Python koristi razmake za označavanje blokova (tipično 4 razmaka) pa ispravan kod izgleda ovako:
>>> def zbroj(a, b):
... c=a+b
... print("Rezultat je",c)
...
>>>
Rad u interaktivnom Python shellu nije za početnika pa ti preporučam besplatan JetBrainsov PyCharm Community edition.
Nevezano za ovu temu, imam jedno pitanje pa bi radije pitao u postojećoj temi nego da otvaram novu.
Za diplomski rad koristim opensource softver u kojeg manualno ubacujem podatke iz excela i za to mi treba previše vremena s obzirom da ćemo trebati vrtiti neke oprimizacije/solvere i sl. Softver te podatke čita iz običnog file formata (bez ekstenzije). Ono što bi meni trebalo je skripta koju bi napisao vjerojatno u Pythonu koja će uzeti tražene podatke (tipa jedan stupac) i spremiti ih u obični file format.
Djeluje mi jako jednostavno, ali znam jako malo programiranja pa mi trebaju upute kako krenuti.
Hvala unaprijed :)
Kako bez ekstencije? Koji je format koji sw čita?
Da nije csv? Export to csv iz excela je bulid in funkcija.
U windows exploreru mi ne piše nikakav format, otvorim ga s notepad++ ili običnim notepadom i tu upisujem c/p data iz excela. U notepad++ ga doslovno spremim kao All Types (*.*). Softver to očita kao set podataka kojeg uzime kao sekundnu/minutnu ili satnu potrošnju energije/vode, ovisno što mu zadam.
Edit: znam za .csv, ali nije. Eksperimentirao sam s "pandas" libraryem u Pythonu i tamo se može spremati u .csv
Ok. Nebitno kaj piše u win exploreru. Kakvi su podaci (struktura) u toj datoteci kada otvoriš sa N++?
Otvorim ga s N++ i doslovno imam u prvom redu ime software-a, u drugom redu prazno i od trećeg reda pa nadalje do kojeg god reda hoću brojke koje god hoću postaviti. Softver to uzima kao pattern neke potrošnje vode/energije.
Ali nema veze jer sam ipak uspio učitati taj pattern iz .csv datoteke pa sam sad i napisao tu mini skripticu uz pomoć pandasa. Izgleda da softver čita bilo koje podatke napisane u tom obliku. Sad sam probao i kao .txt sejvati podatke i uspio je. Hvala svejedno!
Super.
Kao što rekoh. Nebitno kaj piše u win exploreru.
Pozdrav.Treba mi pomoc kod ovog zadatka.Ugl računam pretvaranje neto u bruto 2 plaću.E sad ovaj kppr36 sta sam boldao ovisi o kp,odnosno koficjentu prireza.Trebao bih staviti uvjete da npr.ako netko kada dobije pitanje unese koficjent prireza kada se pokrene funkcija da je recimo 1.5,da u formulu se obracunava automatski da je kpr36= 1.7 itd.itd. uvjeta takvih bi trebao napravit 20 takPokusao sam sa if kp=1,kpr36 =1.7,elif kp=1 kpr36=..... itd itd.... ali neide.Hvala
n=float(input("Unesite svoju neto plaću: "))
kp=float(input("Unesite svoj koficjent prireza: "))
O=4000
if n<=O:
Bruto1=n*1.25
elif n<=30000-(7200*kp)+O :
Bruto1=((n-O)/(1-(0.24*kp))+O)/0.8
elif n>30000-(7200*kp)+O or n<=40550.40**2[(10550.40**3-O)*0.36*kp+7200*kp]**4 :
Bruto1=(30000+O+(n-(30000-7200*kp+O))*kppr36)/0.80
Bruto2=Bruto1+(Bruto1*0.165)
print("Tvoja Bruto1 plaća je",Bruto1)
print("Tvoja Bruto2 plaća je" ,Bruto2)
Za takvo preslikavanje možeš koristiti dictionary:
REVERZNI_KOEFICIJENT = {
1.0: 1.7,
1.1: 1.9,
1.2: 2.2,
}
kp = float(input('Unesite svoj koeficijent poreza:'))
kppr36 = REVERZNI_KOEFICIJENT[kp]
Mislim da tebi nije radilo jer Python za usporedbu koristi == (dva znaka jednakosti) pa rješenje s ulančanim if/else izgleda ovako:
kp = float(input('Unesite svoj koeficijent poreza:'))
if kp == 1.0:
kppr36 = 1.7
elif kp == 1.1:
kppr36 = 1.9
elif kp == 1.2:
kppr36 = 2.2
Thx.Ako bi koristio i imam 3 input.kppr 24.znaci ako npr ovako zelimnapraviti if kp=1.2 =kppr=1.8 =kppr24=1.9 .Govorim za dictionary
Onda možeš za vrijednost dictionaryja staviti tuple
REVERZNI_KOEFICIJENTI = {
1.0: (1.7, 1.0),
1.1: (2.2, 1.5),
1.2: (1.8, 1.9),
}
kp = float(input('Unesite koeficijent poreza:'))
kppr, kppr24 = REVERZNI_KOEFICIJENTI[kp]