Python_Essentials_23 - itnett/FTD02H-N GitHub Wiki
1. Employee & Company Classes Example (company.py)
The company.py
file shows a simple Python implementation of employee management with different employee types: salaried, hourly, and commission-based employees. This script can be presented in the Wiki with clearer headings, formatted code, and explanations.
Optimized Markdown Presentation
# 👨💼 Firma og Ansatte i Python
Denne delen handler om hvordan vi kan bruke objektorientert programmering i Python for å modellere et firma som betaler sine ansatte ukentlig.
## 📝 Firma-klasse
Vi starter med å lage en `Firma`-klasse som skal håndtere ansatte:
```python
from employee import Employee, SalaryEmployee, HourlyEmployee, CommissionEmployee
class Company:
def __init__(self):
self.employees = []
def add_employee(self, new_employee):
self.employees.append(new_employee)
def display_employees(self):
print('Nåværende Ansatte:')
for i in self.employees:
print(i.fname, i.lname)
print('-------------------')
def pay_employees(self):
print('Betaler Ansatte:')
for i in self.employees:
print('Lønn til:', i.fname, i.lname)
print(f'Beløp: ${i.calculate_paycheck():,.2f}')
print('---------------------------')
def main():
firma = Company()
ansatt1 = SalaryEmployee('Ola', 'Nordmann', 50000)
firma.add_employee(ansatt1)
ansatt2 = HourlyEmployee('Kari', 'Nordmann', 25, 50)
firma.add_employee(ansatt2)
ansatt3 = CommissionEmployee('Per', 'Hansen', 30000, 5, 200)
firma.add_employee(ansatt3)
firma.display_employees()
firma.pay_employees()
main()
Forklaring:
- Klassen
Company
holder styr på ansatte og utbetaler lønn ved å bruke forskjellige ansatt-typer: fast lønn (SalaryEmployee
), timebetalte ansatte (HourlyEmployee
), og kommisjonsbetalte ansatte (CommissionEmployee
). - Vi bruker f-string formatering for å vise lønnen på en pen måte med to desimaler.
2. Acronyms Lookup Program (acronyms.py)
The acronyms.py
script allows users to either look up or add acronyms and their definitions. This can be adjusted for a Norwegian audience and demonstrated visually with explanations of file handling and error management.
Optimized Markdown Presentation
# 🔠 Program for Forkortelser i Python
Her lager vi et program som kan se opp eller legge til forkortelser (acronyms) og deres definisjoner i en tekstfil.
## 📝 Kode for å finne eller legge til forkortelser:
```python
def find_acronym(filnavn, forkortelse):
try:
with open(filnavn) as fil:
for linje i fil:
if forkortelse in linje:
print(linje)
return linje
except FileNotFoundError as e:
print('Filen finnes ikke')
return False
print('Forkortelsen finnes ikke')
return False
def add_acronym(filnavn, forkortelse, definisjon):
try:
with open(filnavn, 'a') as fil:
fil.write(f"{forkortelse} - {definisjon}\n")
return True
except OSError:
print('Kan ikke åpne filen for skriving.')
return False
if __name__ == "__main__":
filnavn = 'forkortelser.txt'
valg = input('Vil du finne(F) eller legge til(A) en forkortelse?')
if valg == 'F':
oppslag = input("Hvilken forkortelse vil du søke etter?\n")
find_acronym(filnavn, oppslag)
elif valg == 'A':
forkortelse = input('Hvilken forkortelse vil du legge til?\n')
definisjon = input('Hva er definisjonen?\n')
add_acronym(filnavn, forkortelse, definisjon)
Forklaring:
find_acronym
: Søker etter en forkortelse i filen.add_acronym
: Legger til en ny forkortelse med definisjon til filen.- Vi bruker unntakshåndtering (
try/except
) for å håndtere filer på en sikker måte.
3. File Organization Script (organize.py)
This script organizes files into different folders based on file extensions, which can be a common task in file management systems.
Optimized Markdown Presentation
# 🗂️ Organisering av Filer basert på Filtyper i Python
Her er et Python-program som organiserer filer i mapper basert på deres filendelser (f.eks. bilder, dokumenter, zip-filer).
## 📝 Kode for filorganisering:
```python
import os
import shutil
def organize_files(desktop_path):
folders = {
"Images": [".jpg", ".jpeg", ".png", ".gif"],
"Documents": [".pdf", ".docx", ".txt"],
"Archives": [".zip", ".tar", ".gz"]
}
# Lage mapper hvis de ikke finnes
for folder_name in folders:
folder_path = os.path.join(desktop_path, folder_name)
if not os.path.exists(folder_path):
os.mkdir(folder_path)
# Organisere filer basert på filendelse
for filename in os.listdir(desktop_path):
original_file_path = os.path.join(desktop_path, filename)
if os.path.isfile(original_file_path):
for folder_name, extensions in folders.items():
if any(filename.endswith(ext) for ext in extensions):
destination_folder = os.path.join(desktop_path, folder_name)
shutil.move(original_file_path, destination_folder)
break
Forklaring:
- Vi bruker modulen
os
for å navigere filsystemet ogshutil
for å flytte filer. - Mapper som "Bilder", "Dokumenter" og "Arkiver" lages automatisk basert på filtypen.
- Tips: Bruk utskrifter (
print
) ellerdebugger
for å se nøyaktig hva som skjer under flyttingen.
Konklusjon
Disse tre eksemplene dekker viktige konsepter i Python, fra objektorientering til filbehandling og unntakshåndtering. De er nå tilpasset for et norsk publikum, og optimalisert for visning i GitHub Wiki med klar struktur, emojis, og presisjonsformatering for bedre forståelse.