Øvelse 4 – Oppgave 3
a)
Lagring av konstanter
Gravitasjonsakselerasjonen g på jordoverflaten er omtrent 9.81 m/s². For våre formål i denne deloppgaven kan denne antas å være konstant. Tiden som trengs for at et objekt i fritt fall skal ramle et gitt antall meter (d) er gitt ved formelen
t = sqrt(2m/g)
hvor g er gravitasjonsakselerasjonen som gitt tidligere.
I denne deloppgaven skal du lagre gravitasjonskonstanten i en global variabel med navnet GRAVITY på toppen av programmet ditt. Deretter skal du lage en funksjon get_fall_time som tar inn et gitt antall meter, og bruker formelen gitt over til å returnere hvor lang tid det tar et objekt å ramle det gitte antallet meter. La så programmet ditt ta inn en fall-lengde i meter fra brukeren, og bruk funksjonen du har laget til å regne ut hvor lang tid det tar å ramle den gitte distansen. Print ut resultatet.
Løsningsforslag
## Oppgave 3a svar import numpy as np GRAVITY = 9.81 def get_fall_time(m): t = np.sqrt(2*m/GRAVITY) return t m = int(input('Hvor mange meter? ')) tidTilBakken = get_fall_time(m) print('Det tar', format(tidTilBakken,'.1f'), 'sekunder å falle', m, 'meter ved en gravitasjon på ', GRAVITY)
b)
Oppdatere en global variabel
I denne oppgaven ønsker vi å legge til rette for flere verdier av gravitasjonsakselrasjonen, ettersom denne ikke er helt konstant over hele jordoverflaten, i tillegg til at den vil være forskjellig på f.eks. månen. En mulig måte å løse dette på kunne vært å introdusere en ny funksjon som lar brukeren overskrive verdien til den globale konstanten. Husk at denne nye konstanten fortsatt må være global for å kunne brukes i resten av programmet.
Løsningsforslag:
## Oppgave 3b svar import numpy as np g = float(input('Hva er g? ')) # Angi tallet som skal pass'es til set_gravity # funksjonen def set_gravity(g): global GRAVITY # Gjør GRAVITY til en global variabel GRAVITY = g # Sett GRAVITY til parameter g return GRAVITY GRAVITY = set_gravity(g) def get_fall_time(m): t = np.sqrt(2*m/GRAVITY) # Sett m inn i formelen og bruk GRAVITY-konstanten return t m = int(input('Hvor mange meter? ')) # be om antall meter objektet skal falle tidTiBakken = get_fall_time(m) # Kall get_fall_time og pass input for meter # til funksjonen print('Det tar', format(tidTiBakken,'.1f'), 'sekunder å falle', m, 'meter ved en gravitasjon på ', GRAVITY)