bild
Skolan för
elektroteknik
och datavetenskap

Laboration 5 - Atomvikter

Ditt program ska bygga upp en hashtabell över alla grundämnens beteckningar och atomvikter så att det supersnabbt kan söka önskad information. Dialogen blir så här:
    Atombeteckning: Ag
    107.8682
    Atombeteckning: Au
    196.966569
    Atombeteckning: Q
    Okänd atom
    Atombeteckning: 

Du ska göra tre versioner av programmet:

  1. Använd Pythons inbyggda datastruktur dictionary som hashtabell.
  2. Implementera en egen hashtabell.
  3. Lägg till ett grafiskt gränssnitt.

1. Hashning med Pythons inbyggda dictionary

Skriv en klass Hashtabell som använder dictionary. Den ska ha metoderna put och get.

UTF-8 (Ubuntu/Mac) ISO8859-1 (Windows)Python 3
hashtestUTF8.py hashtestISO8859.py hashtest3.py
Programmet hashtest.py (se tabellen till höger) innehåller data om alla atomer (namn och atomvikt). Lista ut vad det gör och hur det anropar hashtabellen. Använd det sedan för att kontrollera om din hashtabell fungerar.

Skriv sedan ett huvudprogram labb5.py där man kan ge ett atomnamn och få ut atomvikten, enligt dialogexemplet ovan.


2. En egen hashtabell

Nu ska du göra en ny version av klassen Hashtabell (spara den i en ny fil) där du använder en Python-lista för att implementera en egen hashtabell. Krav:
  • Noderna måste innehålla både nyckel och värde
  • Hashtabellen ska vara lagom stor
  • Någon krockhantering måste ingå, t ex krocklistor eller probning
  • Använd KeyError för att tala om att en nyckel inte finns
  • Skriv en egen hashfunktion (Pythons inbyggda hash() räcker inte)
  • Ska klara testning med hashtest.py ovan
Låt nu labb5.py använda din egen hashtabell!


3. Grafiken

För att få till grafiken i labb5.py importerar du klasserna Molgrafik och Ruta från filen molgrafik.py.

Börja med att skapa ett Molgrafik-objekt;

  mg = Molgrafik()

Klassen Ruta har fyra attribut:
atom där du kan lägga in atomens namn
num där du kan lägga in atomens vikt
next och down som du kan strunta i för denna labb (dom används i labb 7).

Gör ett objekt r av Ruta och använd sedan metoden show så här:

  mg.show(r)

Om programmet avslutas direkt hinner man inte se grafiken blinka förbi. Lägg en slinga runt huvudprogrammet för inmatning av flera atomer.

PS Provkör gärna programmet i ett Terminalfönster för att undvika ev problem med IDLE.


Boka tid för redovisning av labb 5.












Lysande genomfört av................................. menar............................ den ...............

Sidansvarig: Linda Kann <lk@csc.kth.se>
Uppdaterad 2012-10-03