Bonsoir, j'ai un dm à rendre sous peu, et j'ai malheureusement loupé des cours. J'ai essayé de rattraper en vain, car je ne comprends pas comment faire une fonction (text) donc l'alphabet, et utiliser le code césar, c'est à dire décaler les lettres. Pour la seconde étape je ne peux que la faire si, la fonction text est crée. J'ai besoin de votre aide ! De plus, chaque fonction doit avoir un "docstring" et un "assert" ce que je ne comprends pas.
Adresse = df['Adresse'].values.tolist()
Adresse
NvAdresse=[]
for i in range(227):
Var=Adresse[i]
NvAdresse.append(Var.split("-"))
NvAdresse
Salut! etant sur un projet, j'ai transformé mon dataframe en liste pour pouvoir mieux l'apprehender(manipuler, recodage, rectifier les orthographes...) (Voir ligne1 du code). Je voudrais divisé chaque ligne de ma liste initiale(adresse) selon que le separateur soit un (-) puis puis inserer chaque ligne divisé dans ma nouvelle liste (NvAdresse). Mais j'ai une erreur probablement à la 6éme ligne du code.
Voici l'erreur affiché sur mon interpreteur: AttributeError: 'float' object has no attribute 'split'
Tu es sûr que la colonne adresse ne contient que des chaînes de caractères? Peut-être que si est une adresse est : 21-avenue de la libération - Paris, il considère que 21 est un float. à ce moment là ça vaut le coup de transformer chaque ligne en str en utilisant: Var = str(Var)
voici mon programme, je n'arrive pas à afficher "erreur" quand je mets des majuscules et des minuscules merci de m'aider
def checkMajuscules(text):
ALPHABET="ABCDEFGHIJKLMLNOPQRSTUVWXYZ"
for c in text:
if (c in ALPHABET) == False:
return False
return True
def cesar3(text):
newChar = ""
if checkMajuscules(text):
for c in text:
n=((ord(c)-65+3)%26)+65
newChar = newChar + chr(n)
else:
newChar = newChar +"Erreur"
return newChar
carac=input("rentre le carctère en majuscule:")
print(cesar3(carac))
Dans ta fonction checkMajuscule ton return True était mal indenté. Il ne doit pas être dans la boucle for mais à la fin de la fonction (donc au même niveau que le for). Ainsi ta fonction retourne True uniquement si elle n'a trouvé aucune minuscule
- Edité par Charles-HenriDupire 9 novembre 2019 à 16:18:20
Je ne sais pas ce qu'il ya dans votre TD fonctions python mais j'imagine que formater le texte consiste à le transformer en liste de mots:exemple:"il fait beau" -> ['il', 'fait', 'beau']. Ainsi qu'à transformer toutes les minuscules en majuscule. Vous aurez sans doute la réponse en revoyant votre TD.
Exercice 1.6 ★★ On donne un extrait des logins d'accès au réseau du lycée :
alecoutur Huz4
lmartin monty
fsincere gnugpl
1) Créer une variable de type dict qui contient les couples identifiant - mot de passe ci-dessus. 2) La saisie du login fournit deux variables identifiant et motdepasse : une pour l'identifiant et l'autre pour le mot de passe. Construire une variable booléenne qui donne True en cas d'identification correcte, et False dans le cas contraire : lmartin monty → True alecoutur fqsdf → False martin monty → False (ce cas est plus compliqué à traiter)
Bonjour à tous, j'ai une petite question de débutante. Est-ce normal que les apostrophes et les virgules soient visibles dans la console ? Je vous joins une image et le code :
#!/usr/bin/python
# -*-coding:Utf-8 -*
i=0
nombre=int(input("Saisissez un nombre entier"))
while i<=10 :
print(nombre," x ",i," = ",nombre*i)
i+=1
""" Chemin d'acces : cd /home/jaenne/Documents/Python3.8 """
Merci pour ta réponse rapide. Je pensais être en Python 3.8. Je l'ai téléchargé puis installé. Je ne comprends pas d’où vient l'erreur. Peut être de l'interpréteur ?
#!/usr/bin/python
Edit : J'ai vérifié :
cd /usr/bin
commande : ls
Python3.8 n'est pas installé sur ma machine. J'ai donc corrigé le chemin vers ma dernière version :
Je viens de terminer le TP Zcasino. J'ai essayé de rendre le code propre.
- J'aimerais avoir vos avis sur la présentation et l'organisation.
- Ai-je le droit de faire des fonctions aussi conséquentes ?
Merci d'avance.
Main :
#!/usr/bin/python3.5
# -*-coding:Utf-8 -*
""" Ce programme est un jeu de roulette de casino aux règles simplifiées. """
from fonctionsCasinoZ import *
quitter = False
argentJoueur = 50
print ("Bienvenue au Casino Z ! \nLe casino vous offre 50 €.")
while quitter is False :
pariSurCase = False
mise = False
while pariSurCase is False :
texte = "\n\n\n\n\nChoisissez votre case."
pariSurCase = testNombreEntier(texte, 0 , 49)
print("Vous avez parié sur la case",pariSurCase,".")
while mise is False :
texte = "Choisissez votre mise."
mise = testNombreEntier(texte, 1 , argentJoueur)
print("Vous avez parié",mise,"€.")
case = laBille()
argentJoueur = resolutionDuPari(pariSurCase,case,mise,argentJoueur)
print("Vous avez à présent",argentJoueur,"€.")
quitter=sortir(argentJoueur)
""" Chemin d'acces : cd /home/jaenne/Documents/Python3.5/casinoZ """
Fonctions :
#!/usr/bin/python3.5
# -*-coding:Utf-8 -*
from random import randrange
from math import ceil
def sortir(nb) :
"""1 : Le joueur a-t-il de l'argent ?
2 Le joueur veut-il continuer de jouer ?"""
if nb is 0 :
print("\n\n\n\nVous êtes à sec. Le casino vous remercie pour votre participation à son chiffre d'affaire.")
return True
else :
choix = input("Pour quitter le casino tapez la touche Q. L'abus de jeu est néfaste faîtes-vous aidez ! Pour continuez appuyez sur ENTREE : ")
if choix is "Q" or choix is "q" :
print("Merci d'avoir joué.")
return True
else :
return False
def laBille():
"""Définit la case gagnante."""
nbr = (randrange(49))
print("La bille est sur la case",nbr,".")
return nbr
def testNombreEntier(texte,a,b):
"""Test si le nombre est entier
test si le nombre est dans l'intervale : a<nombre<b."""
print("Vous devez saisir un nombre entier entre",a,"et",b,"." )
nb = input(texte)
try :
nb = int(nb)
except ValueError:
print("Vous n'avez pas saisi un nombre entier.")
return False
if nb < a or nb > b :
print("Le nombre",nb,"n'est pas dans l'intervale.")
return False
else :
return nb
def resolutionDuPari(pariSurCase,case,mise,argent):
"""Résolution du pari et :
- distribution des gains
- ou perte de la mise"""
moduloPari = pariSurCase%2
moduloCase = case%2
if pariSurCase is case :
print("Wohoo ! Vous avez le bon numéro !\nVous gagnez",mise*3,"€.")
return argent + mise*3
elif moduloPari is 0 and moduloCase is 0 :
print("Pair, noir gagne !\nVous gagnez",ceil(mise/2), "€.")
return argent + ceil(mise/2)
elif moduloPari is not 0 and moduloCase is not 0 :
print("Impair, rouge gagne !\nVous gagnez",ceil(mise/2), "€.")
return argent + ceil(mise/2)
else :
print("Vous avez perdu votre mise de",mise,"€.")
return argent-mise
Pour ce qui est du style, oriente-toi vers la PEP8.
Tu y verras notamment que les noms de variables et fonctions snake_case sont préférables à camelCase, comment placer les espaces autour des opérateurs (autour du =, du %, derrière la virgule, etc.), et qu'on ne compare pas de valeur avec True ou False, on teste juste la valeur (on écrit while not mise et pas while mise is False).
Et surtout, SURTOUT, on ne compare jamais des nombres avec is, c'est == l'opérateur d'égalité !
Pour ce qui est des fonctions conséquentes, de laquelle parles-tu ? La plus longue fonction que je vois dans ton code fait 14 lignes de code, ça n'a rien de conséquent.
Mais plus qu'une limite sur le nombre de lignes, il faut les limiter en termes de fonctionnalités : plusieurs fonctions qui font une seule chose bien, qu'une seule fonction qui fait plein de choses.
Merci, ça va m’être très utile, je vais étudier ça de prêt.
Du coup, il faut que je découpe mieux mes fonctions ? Elles gèrent trop de choses ou ça va ?
Ma fonction
def testNombreEntier(texte,a,b):
"""Teste si le nombre est entier
teste si le nombre est dans l'intervale : a<nombre<b."""
print("Vous devez saisir un nombre entier entre",a,"et",b,"." )
nb = input(texte)
try :
nb = int(nb)
except ValueError:
print("Vous n'avez pas saisi un nombre entier.")
return False
if nb < a or nb > b :
print("Le nombre",nb,"n'est pas dans l'intervale.")
return False
else :
return nb
fait plusieurs choses dans le but de tester si la saisie utilisateur est utilisable mais on peut aussi dire qu'elle ne fait qu'une chose : tester une saisie.
Je trouve que ça va au niveau découpage, même si j'aurais tendance à ne pas faire d'input dans les sous-fonctions et de plutôt leur faire recevoir l'entrée en paramètre, c'est ainsi plus facile à tester.
Par contre à regarder ta fonction testNombreEntier, il risque d'être difficile d'entrer 0 si c'est permis par les bornes : 0 et False valent la même chose. Il te faudrait utiliser des exceptions ou renvoyer un couple de valeurs (ok, nb).
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique