1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
from tkinter import *
import math
e=math.e # j'affecte la valeur de l'exponentielle à : "e"
window = Tk()
window.title("Calculateur de demi-vie de C14 ")
window.geometry("720x720")
window.minsize(480, 360)
window.iconbitmap("notationex.ico")
window.config(background='#4065A4')
frame = Frame(window, bg='#4065A4' )
width = 243
height = 214
image = PhotoImage(file="notationex.jpg").zoom(35).subsample(32)
canvas = Canvas(frame, width=width, height=height, bg='#4065A4')
canvas.create_image(width/2, height/2, image=image)
canvas.grid(row= 0, column=0, sticky=W)
right_frame = Frame(frame, bg='#4065A4')
label_title = Label(right_frame, text="Quelle demi-vie du carbone 14 veux tu calculer ?", font=("Helvetica", 14), bg='#4065A4', fg='white')
label_title.pack()
T_entry = Entry(right_frame, font=("Helvetica", 14), bg='#4065A4', fg='white')
T_entry.insert(0, "(ex: T, 2T, 3T, 4T...) ")
T_entry.pack(ipady=5)
def demi_vie ():
Nbr_de_vie = T_entry.get() #l'utilistateur introduit le nbr de vie (ex:"2t"ou "2" ou "t")
if (Nbr_de_vie == "T") or (Nbr_de_vie == "t") : # si la valeur introduite est "T" ou "t" alors T vaut 1 demi-vie
Nbr_de_vie = 1
T = Nbr_de_vie
elif len(Nbr_de_vie) < 2 : # si la valeur introduite est composé de moins de 2 caractére (ex : 2) alors T vaut 2
T = int(Nbr_de_vie)
else:
liste_caractere = Nbr_de_vie.split(Nbr_de_vie[1]) # creer une liste de caractere et enlever le terme se trouvant a la 2eme position (ex:2t -> ["2" , ""])
premier_nbr = liste_caractere[0] # choisir le premier caractere et l'affecter a une variable (ex: ["2" , ""] -> "2")
T = int(premier_nbr) # Transformer la valeur en un entier naturel
Nbr_de_vie = 1/(2**T) # calculer le pourcentage (ex: 2t -> 1/(2 a la puissance 2) soit 1/4 = 2 demi-vie )
return(Nbr_de_vie)
def C14 (demivie):
t=0 # compteur (valeur intiale = 0)
Nt = 1
while Nt >= demivie :
t += 16
Nt = e**(-0.0001238*t) # formule qui calcule le nombre d'atome restant a l'instant t exprimée en année
return(t)
def result () :
resultat = str(C14(demi_vie())) + " ans"
T_entry.delete(0, END)
T_entry.insert(0, resultat)
calcul_button = Button(right_frame, text="Calculer", font=("Helvetica", 14), bg='#4065A4', fg='white', command=result)
calcul_button.pack(pady=10)
label4_title = Label(right_frame, text="Au bout de quelle année souhaite-tu determiner \n le pourcentage d'atomes restant/perdus de C14: ", font=("Helvetica", 14), bg='#4065A4', fg='white')
label4_title.pack()
AN_entry = Entry(right_frame, font=("Helvetica", 14), bg='#4065A4', fg='white')
AN_entry.insert(0, "(ex: 2000)")
AN_entry.pack(ipadx=50, ipady=5)
def C14_restant ():
t = AN_entry.get()
i= float(t)
Nt = e**(-0.0001238*i)
Nt = Nt * 100
NU = int(Nt)
return(NU)
def C14_perdus ():
t = AN_entry.get()
i= float(t)
Nt = e**(-0.0001238*i)
Nt = Nt * 100
NU = int(Nt)
Nt = 100 - NU
return(Nt)
def result2 () :
resultat = "restant : " + str(C14_restant()) + "% " + "perdus : " + str(C14_perdus()) + "%"
AN_entry.delete(0, END)
AN_entry.insert(0, resultat)
calcul_button = Button(right_frame, text="Calculer", font=("Helvetica", 14), bg='#4065A4', fg='white', command=result2)
calcul_button.pack(pady=10)
label5_title = Label(right_frame, text="Pour detrminer l'age, indiquer combien \n reste-il de teneur en pourcentage de C14", font=("Helvetica", 14), bg='#4065A4', fg='white')
label5_title.pack()
pourc_entry = Entry(right_frame, font=("Helvetica", 14), bg='#4065A4', fg='white')
pourc_entry.insert(0, "ex: 70 (soit 70%)")
pourc_entry.pack(ipadx=86 , ipady=5)
def C14_restant_pourcentage ():
t = pourc_entry.get()
i= int(t)
Rep = math.log(i/100)/-0.0001238
Reponse = int(Rep)
return (Reponse)
def result3 () :
resultat = "l'age de l'objet remonte à " + str(C14_restant_pourcentage()) + " ans à peu près"
pourc_entry.delete(0, END)
pourc_entry.insert(0, resultat)
calcul3_button = Button(right_frame, text="Calculer", font=("Helvetica", 14), bg='#4065A4', fg='white', command=result3)
calcul3_button.pack(pady=10)
label6_title = Label(right_frame, text="Pour detrminer l'age, indiquer quelle \n pourcentage de teneur en C14 a été perdus ", font=("Helvetica", 14), bg='#4065A4', fg='white')
label6_title.pack()
pourc2_entry = Entry(right_frame, font=("Helvetica", 14), bg='#4065A4', fg='white')
pourc2_entry.insert(0, "ex: 40 (soit 40%)")
pourc2_entry.pack(ipadx=86, ipady=5)
def C14_perdus_pourcentage ():
t= pourc2_entry.get()
i= int(t)
k = 100-i
Rep = math.log(k/100)/-0.0001238
Reponse = int(Rep)
return(Reponse)
def result4 () :
resultat = "l'age de l'objet remonte à " + str(C14_perdus_pourcentage()) + " ans à peu près"
pourc2_entry.delete(0, END)
pourc2_entry.insert(0, resultat)
calcul4_button = Button(right_frame, text="Calculer", font=("Helvetica", 14), bg='#4065A4', fg='white', command=result4)
calcul4_button.pack(pady=10)
label3_title = Label(right_frame, text="", font=("Helvetica", 50), bg='#4065A4', fg='white')
label3_title.pack()
label2_title = Label(right_frame, text="Created by maztech", font=("Helvetica", 10), bg='#4065A4', fg='white')
label2_title.pack()
right_frame.grid(row=0, column=1, sticky=W)
frame.pack(expand=YES)
mainloop() |