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
| # -*- coding: utf-8 -*-
# Ce programme permet d'identifier tous les multiples de 3 et de 5 dans une
# borne donnée par l'utilisateur.
# il additionne ensuite ses valeurs et affiche le resultat a l'ecran
minimum = raw_input("veuillez entrer une valeur minimal: ")
maximum = raw_input("veuillez entrer une valeur maximal: ")
maxlen = len(maximum) # La taille de la chaine de caractère. Attention avec l'index str[index].
index = 0 # L'index d'une chaine de caratère commence à zéro.
maxvalide = 1 # Voir maxvalide and minvalide plus bas.
while index < maxlen: # index < maxlen et non index <= maxlen car commence à zéro.
# 'not' et 'in' sont dans le tuto mais passent inaperçus.
# dommage, surtout pour in...
if not maximum[index] in "0123456789": # Le caractère maximum[index] est il ('in') dans "0123456789" ?
maxvalide = 0 # Si c'est non ('not') l'entrée n'est pas valide > On passe maxvalide à zéro.
# Vous remarquerez l'utilité de 'not' au dessu:
# if quelquechose:
# jenefaisrien
# else:
# jefaisquelquechose
# deviens
# if not quelquechose:
# jefaisquelquechose
# >>> a = 0
# >>> if a != 0:
# ... a
# ... else:
# ... print 'ok'
# ...
# ok
# >>> if not a:
# ... print 'ok'
# ...
# ok
index = index + 1 # 'break', permettant d'intérrompre le while, n'étant pas encore abordé on fini la boucle.
# Re belote avec minimum. Vous conviendrez que c'est moche de se répéter.
# La solution c'est le ask_integer(prompt) de wiztricks, une fonction.
# Cela arrive plus loin dans le tuto.
minlen = len(minimum)
index = 0
minvalide = 1
while index < minlen:
if not minimum[index] in "0123456789":
minvalide = 0
index = index + 1
# Voir Contrôle du flux d'instructions + Principaux types de données
if maxvalide and minvalide: # if valeur != 0 est égal à if valeur.
# Comme maxvalide et minvalide sont != 0 (== 1) la conversion int(valeur) est possible.
current = minimum = int(minimum) # Voir les affectations multiples au début du tuto.
maximum = int(maximum)
somme = 0
liste = []
while current <= maximum:
if not current % 3 and not current % 5: # current % x donne 0 ou 1. Si c'est 0 current % x == 0 reviens à not current % x
somme = somme + current # somme += current
liste.append(current)
current = current + 1 # current += 1
print "les valeurs situées entre", minimum, "et", maximum, "qui"
print "sont a la fois multiples de 3 et de 5 sont les suivants:"
print liste
print "la somme de ces elements est égale a :", somme
else:
print 'Entrées non conforme.'
if not minvalide:
print minimum, "n'est pas un nombre."
if not maxvalide:
print maximum, "n'est pas un nombre."
print 'Abandon.' |
Partager