Tässä esimerkissä lasketaan avaruuskappaleiden tilavuuksien erotuksia. Laskeminen hoidetaan funktioilla, jotka laskevat pohjan pinta-alan, kappaleiden tilavuuden ja verrannosta saatavan korkeuden ja pituuden. Ohjelma kykenee laskemaan lieriön ja kartion/pyramidin tilavuuden pohjana toimii joko ympyrä tai neliö. Verrannon avulla voidaan laskea pienemmän kappaleen korkeus tai pituus. Lisäksi ohjelma kykenee laskemaan korkeuden sivujanan kautta, kun kyseessä on kartio tai pyramidi.
Kun tarvittavat laskut on suoritettu, näytetään kappaleen tiedot (pohjan ja kappaleen tyypi) ja näytetään kappaleiden tilavuuksien erotus.
Lisäyksenä tähän ohjelma laskee myös tilavuuden valmiiksi annetun pinta-alan kautta, kun kyseessä on lieriö/särmiö tai kartio/pyramidi sekä pallon tilavuuden (pallolla ei ole pohjaa).
import math def Tilavuus(pinta_ala,korkeus,tyyppi): tilavuus = 0.0 if (tyyppi == 1): #Lieriö tilavuus = pinta_ala*korkeus elif (tyyppi == 2): #Kartio tilavuus = (1/3.0)*pinta_ala*korkeus elif (tyyppi == 3): #Pallo tilavuus = (4/3.0)*math.pi*korkeus**3 return tilavuus def PohjanPintaAla(pituus,korkeus,tyyppi,tyyppi_kappale,pa): pinta_ala = 0.0 #Lasketaan valitun tai valmiiksi annetun pohjan pinta-ala if (tyyppi == 1): #Neliö pinta_ala = pituus**2 elif (tyyppi == 2): #Ympyrä pinta_ala = math.pi*pituus**2 elif (tyyppi == 3): #Valmis pinta-ala pinta_ala = pa return Tilavuus(pinta_ala,korkeus,tyyppi_kappale) def Verranto(pituus,pituus_pienempi,korkeus,korkeus_pienempi): if (pituus_pienempi == 0): tulos = pituus*korkeus_pienempi/korkeus elif (korkeus_pienempi == 0): tulos = pituus_pienempi*korkeus/pituus return tulos #Ohjelmassa on kolme erityyppistä avaruuskappaletta (lieriö/särmiö, kartio/pyramidi ja pallo) #Ohjelmassa on kaksi erityyppistä pohjaa (neliö ja ympyrä) #Pallolla ei ole pohjaa jatko = 1 while jatko == 1: #Pituus voi olla joko neliön sivun pituus tai ympyrän säde #Korkeus voi olla joko kappaleen korkeus tai kartion/pyramidin sivujana print("Anna pituus") pituus = float(input()) print("Anna korkeus") korkeus = float(input()) print("Anna pohjantyyppi 1) Neliö 2) Ymypyrä 3) Valmis pohja") tyyppi = int(input()) print("Anna kappaleen tyyppi 1) Lieriö/Särmiö 2) Kartio/Pyramidi 3) Pallo") tyyppi_kappale = int(input()) valinta = 0 if (tyyppi_kappale == 2): print("Onko korkeus sivujanan pituus 1) Kyllä") valinta = int(input()) if (valinta == 1): if (tyyppi == 1): korkeus = math.sqrt(korkeus**2-(pituus/2)**2) elif (tyyppi == 2): korkeus = math.sqrt(korkeus**2-pituus**2) #Pienempi kappale valinta_pienempi = 0 pituus_pienempi = 0.0 korkeus_pienempi = 0.0 if (tyyppi == 1 or tyyppi == 2): print("Valitse pienempi 1) korkeus 2) pituus") valinta_pienempi = int(input()) if (tyyppi_kappale == 1 or tyyppi_kappale == 2): if (valinta_pienempi == 1): while (pituus_pienempi <= 0 or pituus_pienempi >= pituus): print("Anna pituus") pituus_pienempi = float(input()) korkeus_pienempi = Verranto(pituus,korkeus,pituus_pienempi,0.0) elif (valinta_pienempi == 2): while (korkeus_pienempi <= 0 or korkeus_pienempi >= korkeus): print("Anna korkeus") korkeus_pienempi = float(input()) pituus_pienempi = Verranto(pituus,korkeus,0.0,korkeus_pienempi) elif (tyyppi_kappale == 3): while (korkeus_pienempi <= 0 or korkeus_pienempi >= korkeus): print("Anna pallon säde") korkeus_pienempi = float(input()) pa = 0.0 if (tyyppi == 3): print("Anna valmiiksi lasketun pohjan pinta-ala") pa = float(input()) print("Kappale:", end="") if (tyyppi_kappale == 1): print("Lieriö") elif (tyyppi_kappale == 2): print("Kartio") print("Pohja:", end="") if (tyyppi == 1): print("Neliö") elif (tyyppi == 2): print("Ympyrä") #Lasketaan molempien kappaleiden tilavuuksien erotus. if (tyyppi_kappale == 1 or tyyppi_kappale == 2): print("Tilavuus:",PohjanPintaAla(pituus,korkeus,tyyppi,tyyppi_kappale,pa)-PohjanPintaAla(pituus_pienempi,korkeus_pienempi,tyyppi,tyyppi_kappale,pa)) elif (tyyppi_kappale == 3): print("Tilavuus:", Tilavuus(0.0,korkeus,3)-Tilavuus(0.0,korkeus_pienempi,3)) print("Jatketaanko 1) Kyllä") jatko = int(input())
Aihe on jo aika vanha, joten et voi enää vastata siihen.