Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import math
- import random
- import sys
- class Latitude:
- def __init__(self, lat):
- self.latitude = lat
- self.area = 500
- self.sundigit = 10
- self.randomlist = []
- self.energy = []
- self.cv = []
- self.months = {
- 'January':[0,31],
- 'February':[31,28],
- }
- def calcv(self, latitude, t):
- return (23.5*math.sin(math.pi*(t-80)/180)+90-latitude)/90
- def decide(self, v):
- """
- Short desription
- """
- if 0 < v < 1:
- return v**2
- if v >= 1:
- return 1
- if v <= 0:
- return 0
- def calcenergy(self, f):
- """
- Short desription
- """
- self.randomlist.append(random.random())
- return self.area * f * self.sundigit * self.randomlist[-1]
- def gen_yearly_data(self):
- """
- Short desription
- """
- for t in xrange(365):
- v = self.calcv(self.latitude, t)
- f = self.decide(v)
- self.cv.append(f)
- self.energy.append(self.calcenergy(f))
- def show_month(self, m):
- """
- Generate a nice printout for specified month
- """
- index, days = self.months[m]
- r, cv, energy = self.randomlist[index:index+days],\
- self.cv[index:index+days], \
- self.energy[index:index+days]
- print
- print m
- print len(m)*'='
- print "{:<4} {:<4} {:<4} {:<4} {:<4} {:<4} {:<4}".format(
- "Area", "soltal", "latitud", "dag",
- "solighetsfaktor","f(t,latitud)","W(t)")
- for a, b, c in zip(r, cv, energy):
- print "{:<4} {:<4} {:<4} {:<4} {:.4f} {:.4f} {:.4f}".format(
- self.area,
- self.sundigit,
- self.latitude,
- index, a, b, c)
- index += 1
- def get_input():
- """
- Prompt user for input
- """
- number = int(input("How many latitudes do you want to calculate? "))
- latitudes = []
- x=0
- while x < number:
- lat = int(input("latitude: "))
- if lat > 0 and lat < 90:
- latitudes.append(lat)
- x = x + 1
- else:
- print("Next time say a latitude between 0 and 90")
- return latitudes
- def main():
- """
- Main entrypoint for your program
- """
- latitudes = get_input()
- print latitudes
- # L contains a list of classes for the
- # user specified latitudes. The method 'gen_yearly_data()'
- # is called to calculate the data and store the result
- # int member variables
- L = [Latitude(i) for i in latitudes]
- for i in L:
- i.gen_yearly_data()
- # Now print some monthly data for a specific latitude
- L[0].show_month('January')
- L[0].show_month('February')
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement