žnjžnj uto 7.5.2019 12:10

    1. 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.
    2. 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.

Bobobo-bo Bo-bobo sri 8.5.2019 21:37

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')

Bobobo-bo Bo-bobo ned 10.11.2019 20:58

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.

Keops pon 10.2.2020 13:00

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 :)

Keops pon 10.2.2020 13:33

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

Keops pon 10.2.2020 17:17

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!

boks1950 uto 21.4.2020 22:00

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)

Bobobo-bo Bo-bobo uto 21.4.2020 22:35

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