class Account:
    def __init__(self, id):
        self.id = id
        id = 666 
 
acc = Account(123)
print(acc.id)

"""
Explanation: Mise en situation
Qu’est-ce qui est affiché par la dernière ligne ?
End of explanation
"""


confusion = {}
confusion[1] = 1
confusion['1'] = 2
confusion[1.0] = 4
 
somme = 0
for k in confusion:
    somme += confusion[k]
 
print(somme)
print(confusion)

"""
Explanation: Qu’est-ce qui est affiché par la dernière ligne ?
End of explanation
"""


x = True
y = False
z = False
 
if x or y and z:
    print "yes"
else:
    print "no"

"""
Explanation: Qu’est-ce qui est affiché par la dernière ligne ?
End of explanation
"""


inventaire = [("pommes", 22),("melons", 4),("poires", 18),("fraises", 76),("prunes", 51)]
#Classer cette liste selon la quantité de chaque fruit par ordre décroissant

inventaire_inverse = [(qtt, nom_fruit) for nom_fruit, qtt in inventaire]
inventaire_inverse.sort(reverse=True)
inventaire = [(nom_fruit, qtt) for qtt , nom_fruit in inventaire_inverse]
print(inventaire)

"""
Explanation: Classer la liste par ordre décroissant de quantité :
End of explanation
"""


import numpy as np
import numpy.random as nprnd
liste = nprnd.randint(1000, size=1000)
print type(list(liste))
print sum(list(liste))
%timeit sum(list(liste))

print(reduce(lambda x,y: x+y, liste))
%timeit reduce(lambda x,y: x+y, liste)

print np.sum(liste)
%timeit np.sum(liste)

"""
Explanation: calculer la somme d’une liste de nombres
End of explanation
"""


liste = [2,1,1,2,4,1,3]


sum([i for i in liste if i % 2 ==1])

"""
Explanation: Calculer la somme d’une liste des nombres impairs :
End of explanation
"""


liste = [2,1,1,2,4,1,3]
list(set(liste))

"""
Explanation: Transformez cette liste pour qu'il ne reste que des éléments unique  :
End of explanation
"""


%%writefile test.txt
Ceci est la ligne numéro 1
et la ligne numéro deux
d'un fichier texte qui au final contiendra
quatre lignes !

# 1) Comment ouvrir un fichier en lecture en traitant les exceptions possibles ?
my_file = 'test2.txt'
try:
    f = open(my_file)

    try:
        all = f.readlines()        
        print("FILE : {file} contains {numlines:06d} lines ".format(file=my_file,numlines=len(all)))
    except EXPECTED_EXCEPTION_TYPES as e:
        print("ERROR READING FILE : {file}".format(file=my_file))
        print(e)
    finally:
        f.close()

except (IOError, OSError) as e:
    print("ERROR OPENING FILE : {file}".format(file=my_file))
    print(e)
# https://pyformat.info/

my_file = 'test.txt'
with open(my_file) as f:
    all = f.readlines()
    print all
    print("FILE : {file} contains {numlines:06d} lines ".format(file=my_file,numlines=len(all)))
    

"""
Explanation: Meilleur pratique pour ouvrir un fichier:
End of explanation
"""


