Mis on funktsioon?
Funktsioon on nagu väike abimees sinu programmis — sa annad talle midagi (näiteks nime või palga), ta teeb mingi töö ära ja võib sulle midagi tagasi anda. Näiteks sinu koodis on palju selliseid abimehi, kes aitavad lisada töötajaid, neid kustutada või palgaga seotud arvutusi teha.
Konspteeritud ülevaade — Töötajate palkade haldamine sinu GitHubi koodi põhjal
kood:
def valik1(p: list, i: list):
"""Uute töötajate lisamine
Funktsioon lisab uued nimed ja nende vastavad palgad.
:param p: palgade nimekiri
:param i: inimeste nimekiri
:rtype: None
"""
while True:
try:
kogus = int(input("Mitu inimest soovite lisada? "))
break
except ValueError:
print("Palun sisesta arvuline väärtus!")
for _ in range(kogus):
while True:
nimi = input("Sisesta töötaja nimi: ")
if nimi.isalpha():
break
print("Nimi tohib sisaldada ainult tähti!")
while True:
try:
palk = float(input("Sisesta palk: "))
break
except ValueError:
print("Palk peab olema arvuline!")
p.append(palk)
i.append(nimi)
print(f"{nimi} on edukalt lisatud!")
def valik2(p: list, i: list):
"""Isiku eemaldamine
Eemaldab nimekirjast valitud inimese ja tema palga.
:param p: palgade nimekiri
:param i: inimeste nimekiri
:rtype: None
"""
while True:
nimi = input("Sisesta eemaldatava isiku nimi: ")
if nimi.isalpha():
if nimi in i:
break
else:
print("Sellist nime ei leitud nimekirjast.")
else:
print("Nimi peab koosnema ainult tähtedest.")
while nimi in i:
indeks = i.index(nimi)
i.pop(indeks)
p.pop(indeks)
print(f"{nimi} on eemaldatud nimekirjast.")
def valik3(p: list, i: list):
"""Kõrgeim palk
Kuvab suurima palga ja selle saajad.
:param p: palgade nimekiri
:param i: inimeste nimekiri
:rtype: None
"""
maksimum = max(p)
print(f"Kõrgeim palk on {maksimum} €")
for j in range(len(p)):
if p[j] == maksimum:
print(f"{i[j]} saab selle palga.")
def valik4(p: list, i: list):
"""Madalaim palk
Kuvab madalaima palga ja selle saajad.
:param p: palgade nimekiri
:param i: inimeste nimekiri
:rtype: None
"""
minimaalne = min(p)
print(f"Madalaim palk on {minimaalne} €")
for j in range(len(p)):
if p[j] == minimaalne:
print(f"{i[j]} saab selle palga.")
def valik5(p: list, i: list):
"""Palkade sorteerimine
Sorteerib palgad ja nimed kasvavalt või kahanevalt.
:param p: palgade nimekiri
:param i: inimeste nimekiri
:rtype: None
"""
while True:
valik = input("Sorteeri palgad: '>' kasvavalt või '<' kahanevalt: ")
if valik in (">", "<"):
for n in range(len(p)):
for m in range(n + 1, len(p)):
if eval(f"{p[m]} {valik} {p[n]}"):
p[n], p[m] = p[m], p[n]
i[n], i[m] = i[m], i[n]
print("Sorteeritud nimekiri:")
for nimi, palk in zip(i, p):
print(f"{nimi}: {palk} €")
break
else:
print("Lubatud ainult märgid '>' või '<'.")
def valik6(p: list, i: list):
"""Sama palgaga töötajad
Kuvab kõik inimesed, kes saavad sama palka rohkem kui üks inimene.
:param p: palgade nimekiri
:param i: inimeste nimekiri
:rtype: None
"""
unikaalsed_palgad = set(p)
for palk in unikaalsed_palgad:
if p.count(palk) > 1:
print(f"\nPalk {palk} € saavad:")
for j in range(len(p)):
if p[j] == palk:
print(f"- {i[j]}")
# 11 Вычислить зарплату, которую человек получит на руки после вычисления подоходного налога.
def netopalk(palk:int, p: list)->int:
"""Funktsioon tagastab neto palga
param int palk: Palk
rtype: int
"""
palk = int(input('bebe'))
if palk>1200:
return palk*0.8
elif palk>600:
return palk*0.9
else:
return palk
print(palk)
#17 - Написать функцию для редактирования данных. Пользователь выбирает, что редактировать: имя или зарплату. Измененние данные сохраняются в список.
def change(i:list, p:list)->any:
"""
"""
print("""
muuda nime(1)
muuda palk(2)
""")
valik=int(input())
try:
if valik == 1:
print(f'sisesta nimi keda te tahate muuta {inimesed}')
nimivalik = input().capitalize()
if nimivalik in i:
index = i.index(nimivalik)
uusnimi = input("uus nimi: ").capitalize()
i[index] = uusnimi
print(f'nimed: {inimesed}')
else:
print('Sellist nimi ei ole! proovi uuesti')
elif valik == 2:
print(f'sisesta palk keda te tahate muuta {palgad}')
palkvalik = int(input())
if palkvalik in p:
index = p.index(palkvalik)
uuspalk = input("uus palk: ")
p[index] = uuspalk.capitalize()
print(f' palgad: {palgad}')
else:
print('Sellist palk ei ole! proovi uuesti')
else:
print('Vale valik! proovi uuesti')
except:
print('Vale valik!')
#15 15 - Каждый год работникам фирмы поднимают зарплату на 5%, узнай какой будут зарплаты/зарплата у опрделенного работника через Т лет.
def aasta_palgad(i:list,p:list):
"""Funktsioon tagastab palga aasta järgi"""
aasta=int(input("Sisesta mitu aastat: "))
palk=int(input("Sisesta palk: "))
for j in range(aasta):
palk=palk*1.05
print(f'{palk} on {aasta} aasta pärast')
return i,p
def keskmine_palk(i:list,p:list):
"""
param list i: Inimeste järjend
param list p: Palgate järjend
"""
keskmine=sum(p)/len(p)
print("Keskmine palk on: " +str(keskmine))
for j in range(len(p)):
if p[j]>=keskmine:
print(f"{i[j]} saab üle keskmise palka, ta saab {p[j]}")
return i,p
def palk_nime_jargi(i:list,p:list)->:
"""Funktsioon leiab palk nime järgi
param list i: Inimeste järjend
param list p: Palgate järjend
rtype: list, list
"""
nimi=input("Nimi: ").capitalize()
palgad = []
for j in range(len(i)):
if i[j] == nimi:
palgad.append(p[j])
print (nimi,"palgad on",palgad)
return i,p
1. Töötajate lisamine (valik1)
Funktsioon valik1 lubab kasutajal lisada mitu uut töötajat koos nende palkadega. Näiteks:
def valik1(p: list, i: list):
# Küsimus: mitu inimest lisada
kogus = int(input("Mitu inimest soovite lisada? "))
# Iga töötaja nimi ja palk küsitakse eraldi
for _ in range(kogus):
nimi = input("Sisesta töötaja nimi: ")
palk = float(input("Sisesta palk: "))
p.append(palk)
i.append(nimi)
print(f"{nimi} on edukalt lisatud!")
Selles näites on oluline, et nimi koosneb ainult tähtedest (seda sinu koodis kontrollid nimi.isalpha() abil) ja palk on arvuline. Kui midagi valesti sisestada, palub programm uuesti proovida.
2. Töötaja eemaldamine (valik2)
Kui soovid kedagi nimekirjast kustutada, küsib funktsioon:
nimi = input("Sisesta eemaldatava isiku nimi: ")
Kui nimi on olemas, eemaldab ta nime ja vastava palga mõlemast listist. See on oluline, sest nimi ja palk peavad olema omavahel samas kohas.
3. Kõrgeima ja madalaima palga leidmine (valik3 ja valik4)
Kui tahad teada, kes teenivad kõige rohkem või kõige vähem, kasutad funktsioone valik3 ja valik4.
maksimum = max(p)
print(f"Kõrgeim palk on {maksimum} €")
for j in range(len(p)):
if p[j] == maksimum:
print(f"{i[j]} saab selle palga.")
See tähendab, et leitakse suurim palk ja seejärel väljastatakse kõik, kelle palk on sama suur.
4. Palkade sorteerimine (valik5)
Programm võimaldab palgad kas kasvavalt või kahanevalt sorteerida. Seda tehakse nii, et palkade listi vahetatakse vastavalt valikule ja ka nimed liiguvad kaasa, et jääks sidusus alles.
Näiteks:
valik = input("Sorteeri palgad: '>' kasvavalt või '<' kahanevalt: ")
if valik in (">", "<"):
# Sortimine toimub siin
for n in range(len(p)):
for m in range(n + 1, len(p)):
if eval(f"{p[m]} {valik} {p[n]}"):
p[n], p[m] = p[m], p[n]
i[n], i[m] = i[m], i[n]
5. Töötajad sama palgaga (valik6)
Kui mitu töötajat teenivad sama summat, siis see funktsioon leiab ja kuvab kõik sellised nimed. Näiteks, kui kaks inimest saavad 1000 €, kuvatakse mõlema nimi.
6. Neto palga arvutamine (netopalk)
See funktsioon arvutab, palju töötaja kätte saab pärast tulumaksu mahaarvamist.
Sinu koodis:
def netopalk(palk:int, p: list)->int:
if palk > 1200:
return palk * 0.8
elif palk > 600:
return palk * 0.9
else:
return palk
See tähendab, et kui palk on üle 1200 euro, võetakse maha 20%, kui 600 ja 1200 vahel, siis 10%, muidu maksab kogu summa välja
Kokkuvõte
- Lisamine, eemaldamine
- Kõrgeima ja madalaima palga leidmine
- Palkade sorteerimine
- Sama palgaga inimeste leidmine
- Neto palga arvutamine
- Andmete muutmine
- Palgatõusu arvutamine

