Synlig lys

Våre øyne oppfatter elektromagnetisk stråling med en bølgelengde fra 380 til 740 nanometer, eller med en frekvens fra 405 til 790 terahertz. Dette område er kalt synlig lys eller bare lys. elektromagnetisk stråling i synlig lys omdannes til farger i hjernen hos mennesker og dyr. Tabellen nedenfor viser hvor de ulike fargene av synlig lys ligger i spekteret. Wikipedia.

Color Wavelength (nm) Frequency (THz)
Violet 380 - 450 670 - 790
Blue 450 - 485 620 - 670
Cyan 485 - 500 600 - 620
Green 500 - 565 530 - 600
Yellow 565 - 590 510 - 530
Orange 590 - 625 480 - 510
Red 625 - 750 400 - 480

Forholdet mellom bølgelengde og frekvens er gitt ved formelen: $$ \lambda = \frac{c}{f} $$ hvor \(\lambda\) er bølgelengde i meter, \(f\) er frekvens i Hz, og \(c = 3\cdot 10^8\text{ m/s}\) er lysets hastighet. Husk også på at vi har følgende forhold mellom enheter: $$ 1\text{ m} = 10^{9}\text{ nm} $$ $$ 1\text{ Hz} = 10^{-12}\text{ THz} $$ PS: Hz er det samme som 1/s.

I filen visible_light.py skal du skrive et program som spør brukeren om en enhet, enten nanometer (nm) eller terahertz (THz), og siden en verdi (et heltall). Programmet skal skrive ut hvilken farge i synlig lys den enheten og verdien tillhører. Om du får en enhet som ikke er nm eller THz skal programmet ditt informere brukeren at enheten må være enten nm eller THz, og programmet skal avslutte kjøringen (se eksempler under for nøyaktig ordlyd). Om brukeren skriver inn en bølgelengde eller frekvens som er utenfor spektrumet, skal det gis melding om dette også (se eksempler). Om du får en verdi som er akkurat på grensen mellom to farger skal du velge fargen med kortest bølgelengde (høyest frekvens) av de to.

Eksempelkjøringer:

Angi enhet (nm eller THz):
nm   
Angi verdi i nm:
520

Green
Angi enhet (nm eller THz):
THz
Angi verdi i THz:
680

Violet
Angi enhet (nm eller THz):
nm
Angi verdi i nm:
320

320 nm er utenfor det synlige spekteret.
Angi enhet (nm eller THz):
THz
angi verdi i THz:
800

800 THz er utenfor det synlige spekteret.
Angi enhet (nm eller THz):
foo

Enheten må være i nm eller THz, det kan ikke være foo.
Forslag til programflyt

Det er mange ulike måter å løse denne oppgaven på. Programflyten over er et forslag som kan hjelpe deg å bryte ned programkoden i mer overkommelige deler. I skjemaet over er det to større oppgaver vi ikke har løst for deg:

  • La \(f\) være frekvensen i antall Hz. Husk at verdien brukeren har gitt oss har enheten THz, så vi må først regne om. 1 THz er det samme som 10**12 Hz.
  • Lysets hastighet er \(c = 3\cdot 10^8\text{ m/s}\).
  • Plugg verdiene inn i formelen \(\lambda = c/f\) for å regne ut bølgelengden.
  • Regn svaret om fra meter til nanometer.
  • Det kan være lurt å benytte en if-elif -sekvens, hvor betingelsene sjekker verdien til bølgelengden opp mot grensene gitt i tabellen i oppgaveteksten.
  • Ikke overskriv den enhet og verdi brukeren opprinnlig gav som input, men ta vare på dem i variabler slik at du kan skrive ut en feilmelding basert på disse hvis det trengs.