0 inutile après la virgule

Fermé
DieRez - 15 mars 2020 à 10:24
 Utilisateur anonyme - 15 mars 2020 à 10:44
Bonjour,
Je suis lycéen en seconde, et je m'intéresse beaucoup à la programmation, bien que les cours sur ce thème soient très pauvres à mon niveau.
Bref, j'ai entamé, avec ce que que connaissais l'écriture d'un programme permettant, selon un jour et un mois, de définir si cette date est sur une semaine paire, ou impaire, et voici le début.

Code :

def date(jour,mois):
months=[0,31,29,31,30,31,30,31,31,30,31,30,31]
z=(((sum(months[:mois])))+jour)/7
print(z)
if isinstance(z,int)==True:
if z%2==0:
print("semaine impaire")
else:
print("semaine paire")

Cette partie du programme ne marche que pour les mardis (le premier jour de l'année 2020 étant un mardi, c'est le seul jour dont la somme de tous les jours qui le précèdent est divisible par 7)
Le problème c'est que lorsque j'entre une date d'un mardi, z est bel et bien un entier, mais il est suivi d'un 0 après la virgule : la fonction isinstance le prend pour un flottant !

Merci d'avance pour votre aide :-)




Configuration: Windows / Chrome 80.0.3987.132
A voir également:

1 réponse

Utilisateur anonyme
15 mars 2020 à 10:44
Bonjour

il y a un truc primordial en python, l'indentation.
Pour la préserver, CCM (comme tout site de code qui se respecte) dispose d'un outil magique : les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Je ne code pas en python, le fait que ce langage ne soit pas typé et donc qu'on obtienne parfois un résultat tout autre de ce que l'on attend fait partie des raisons.

Si sum() retourne un nombre décimal, alors le résultat final est un décimal.
Le meilleur moyen de savoir si c'est divisible par 7 est d'utiliser l'opérateur modulo, comme tu l'as fait plus bas.

Cela dit, ça n'est pas comme cela qu'on calcule le numéro de semaine.
http://perso.univ-lemans.fr/~hainry/articles/semaine.html

En plus, quelque soir le langage, il existe toujours un type de donnée permettant de travailler avec des dates.
1