Division entière et reste
Dans le module "Expressions arithmétiques" nous avons parlé des opérations de division entière.
Souvenons-nous encore d'eux :
// - division entière, lorsque nous supprimons la partie fractionnaire à la suite de l'opération de division
% - calcul du reste d'une division.
L'opération de reste pour les nombres négatifs dans Python est exécuté un peu différemment que dans d'autres langages de programmation tels que C++ ou Pascal
En Python, l'opération de calcul du reste est effectuée selon des règles mathématiques, c'est-à-dire que, comme on le croit généralement en théorie des nombres, le reste est un nombre non négatif (article très utile 81_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%BE%D0%BC" target=" _blank">ici). Le signe du reste est le même que le signe du diviseur.
Exemple
c = 10 // 3 # Réponse : c = 3
d = 10% 3 # Réponse : d = 1
e = -7 // 4 # Réponse : e = -2
f = -7% 4 # Réponse : f = 1
Les valeurs des variables e et f se sont avérées comme ça parce que
-7 = (-2*4)+1
Ne pas oublier !
En Python, l'opération de calcul du reste pour les nombres négatifs est effectuée selon des règles mathématiques, c'est-à-dire \(-7\ \%\ 4 = 1 \)< br />
Dans le langage de programmation Python le signe du reste est le même que le signe du diviseur.
Les opérations sur les entiers sont très importantes en programmation. Ils doivent être compris et utilisés correctement. Et cela demande de la pratique !
|
Division entière et reste
La nécessité d'appliquer l'opération de calcul du reste de la division est visible lorsque l'on travaille avec les chiffres d'un nombre.
Tâche
Un nombre à trois chiffres est donné. Affichez tous les chiffres de ce nombre, en commençant par les unités, et obtenez un nouveau nombre formé par la permutation des unités et des centaines.
Nous pensons toujours à un nombre dans son ensemble, mais n'oubliez pas que les nombres sont composés de chiffres. Comment sélectionner tous les chiffres d'un nombre ?
En fait, tout est résolu assez simplement, si vous vous souvenez des calculs. Et les mathématiques nous disent que tout nombre peut être décomposé en une somme de termes numériques.
Par exemple : 365 = 3*100 + 6*10 + 5*1 .
Nous voyons que chaque chiffre est un multiplicateur du terme de bit correspondant.
Nous allons montrer comment obtenir chaque chiffre d'un nombre dans une variable distincte en utilisant l'exemple de la division par une colonne par le nombre 10. Nous prenons le nombre 10, car nous avons un système de numération décimale et, par conséquent, les termes binaires 1, 10, 100, etc.
En analysant la figure, vous pouvez voir que
e = n% 10
# opération n % 10 - calcule le dernier chiffre du nombre n
# (c'est-à-dire le chiffre des unités) 365 % 10 = 5
d = n // 10% 10
# opération n // 10 - réduit le nombre de 10 fois,
# c'est-à-dire supprime le dernier chiffre du nombre (365 // 10 = 36),
# maintenant nous pouvons calculer le chiffre des dizaines,
# appliquer l'opération familière au résultat -
# calculer le reste après avoir divisé par le nombre 10, 36 % 10 = 6
s = n // 100
# pour obtenir le chiffre des centaines, il suffit d'écarter deux chiffres à droite du nombre,
# c'est-à-dire deux fois divisé par 10
# (n // 10 // 10 ou identique à n // 100) 365 // 100 = 3 fort>
Ayant les chiffres du nombre stockés dans les variables, nous pouvons en faire n'importe quel autre nombre en multipliant le chiffre souhaité par les facteurs de bits appropriés (par 1, 10, 100, etc.) :
Par exemple, la ligne ci-dessous obtiendra un nouveau nombre à partir du nombre d'origine n , avec des centaines et des unités réarrangées :
1) le chiffre des unités (stocké dans le e ) multiplier par 100 ,
2) le chiffre des dizaines (stocké dans la variable d ) multiplier par 10 ,
3) on peut simplement multiplier le chiffre des centaines par 1 , ou simplement prendre la valeur stockée dans la variable s .
Ensuite, les valeurs des points 1, 2 et 3 doivent simplement être additionnées et nous obtenons un nouveau nombre :
n1 = e*100 + d*10 + s ;
Le programme complet ressemblera à ceci :
n = int(entrée())
e = n% 10
d = n // 10% 10
s = n // 100
print(e, d, s, e*100 + d*10 + s)
|