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 og shutil for å flytte filer.
  • Mapper som "Bilder", "Dokumenter" og "Arkiver" lages automatisk basert på filtypen.
  • Tips: Bruk utskrifter (print) eller debugger 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.