mercredi 9 août 2017

Using multiple booleans in an if statement to decide which file to write to

I'm trying to catch 4570 close encounters between planets, and output the data into certain files, depending on which two planets had the close encounters. I have 5 planets in total, and each planet has a close encounter ONLY with the planet(s) adjacent to it, leaving the possibility of 4 encounters.

for i in range(0,100000): #range this big since close encounters don't happen every iteration      
    def P_dist(p1, p2):
        #function calculating distances between planets

    data1 = open('data1.txt', 'a+')
    data2 = open('data2.txt', 'a+')
    data3 = open('data3.txt', 'a+')
    data4 = open('data4.txt', 'a+')

    init_SMA = [sim.particles[1].a,sim.particles[2].a,sim.particles[3].a,sim.particles[4].a,sim.particles[5].a]

    for j in range(len(init_SMA)-1):
        distance = P_dist(j, j+1)
        if distance <= .01:
            count+=1
            if count > 4570:
                break
            elif(init_SMA[j] == init_SMA[0] and init_sma[j+1] == init_SMA[1])
                #write stuff to data1
            elif(init_SMA[j] == init_SMA[1] and init_sma[j+1] == init_SMA[2])
                #write stuff to data2
            elif(init_SMA[j] == init_SMA[2] and init_sma[j+1] == init_SMA[3])
                #write stuff to data3
            elif(init_SMA[j] == init_SMA[3] and init_sma[j+1] == init_SMA[4])
                #write stuff to data4

#close files

I've left out most of the code, I just want to know whether or not what I've got down will do as explained. I'd also like to know if there is a cleaner way to achieve this.

Aucun commentaire:

Enregistrer un commentaire