Python : Oui j'abuse !

Bonjour, ou bonsoir :slight_smile:

Voila, j’ai encore écrit quelque chose, et j’aimerais un peu d’aide parce que je trouve que mon code est lourd.
Rien de bien compliqué, c’est juste une conversion degrés → radians.
Mon problème est plutôt dans la saisie (et la récupération) de l’angle en degrés.
Bon, je vous montre ce que j’ai écrit, c’est surement très maladroit, et c’est pour ça que je quémande votre aide.

[code]a=input('Donnez votre angle en degrés : (exemple 57°47’32") : ')
n=len(a)

for i in range(n):
if a[i]==‹ ° ›:
d=i
if a[i]=="’":
m=i

deg=’’
for i in range(d):
deg=deg+a[i]
deg=int(deg)

minu=’’
for i in range(d+1,m):
minu=minu+a[i]
minu=int(minu)

sec=’’
for i in range(m+1,n-1):
sec=sec+a[i]
sec=int(sec)

pi=3.1415926535897932384626
rad=(deg+minu/60+sec/3600)/3602pi

print('L’angle en radians mesure : ',rad)[/code]

merci !

Google: regex, python, group, split, capture :).

ok je vais taper ça, mais ne m’en veux pas Glop, je ne comprends que le mot python dans la liste de 5 que tu m’as donnée ! (et le smiley)
Allez, c’est parti, m’en vais voir ggl

RegEx : Regular Expression. C’est juste l’idéal pour la manipulation de texte. En gros, tu definis des patterns qui s’applique pour faire des trucs sur du texte. Ici pour recuperer les parties de ton angles, ca sera parfait.

Split : ca sert à diviser une chaine de caractere en sous chaine à chaque occurance d’un caractere (ex : split(« toto;titi », ‹ ; ›) renvoie un tableau qui contient « toto » et « titi »)

Group : je connais pas
Capture : j’imagine qu’il veut parler des manieres de saisir une chaine

Mais encore une fois, c’est bien de mettre les mains dans le cambouis pour apprendre, mais tu devrais vraiment commencer par des bouquins plus généraux. Tu vas vraiment ramer comme ca.

Puissant et pouvant répondre à quasiment tout les soucis, certes, mais l’idéal je n’irais pas jusqu’à là:

[quote]Certaines personnes, face à un problème, se disent «je sais, je vais utiliser une expression régulière.» Maintenant elles ont deux problèmes.[/quote]–Jamie Zawinski

:smiley:

Sinon voici un exemple avec groups() extrait des expressions régulières dans Plongez dans Python.

capture c’est utiliser une expression régulière pour, en plus de valider une entrée, de récupérer une partie de la chaîne pour l’exploiter. Donc, dans ton expression régulière, tu identifies des parties pour les ‘capturer’.

haha, c’est pas faux :slight_smile:

Et capture, je connaissais pas, j’apprends un truc en plus :slight_smile:

Bah en fait je lis un bouquin qui m’a été conseillé sur ce forum : apprendre_python3.pdf de Gérard Swinnen.
Et je fais les exercices demandés !
Mais après coup je me suis aperçue qu’il y avait les réponses, et que ce que je faisais sur cet exo là était bien au dessus de ce qui était attendu (mais pourquoi pas !)

Là j’en suis au chapitre 6 (page 76 sur 467 lol) et je bugue avec turtle :
quand je fais ça :

from turtle import * reset() n=5 for i in range(n): left(360/n) forward(100)ça fonctionne,

mais quand je fais ça :

from turtle import * reset() n=int(input('Donnez un nombre entre 3 et 10 ')) for i in range(n): left(360/n) forward(100)ça plante ??? la fenêtre graphique s’ouvre en arrière mais n’apparait pas, et quand je clique dessus elle est vide (et ne répond pas)
Je ne comprends vraiment pas pourquoi !!!

Pourquoi ne pas utiliser la constante fournie par python ? math.pi ?

Dans le shell python vois-tu la demande se saisie ?
Pourquoi ne pas utiliser ceci :

try:
    n=int(raw_input("Donner un nombre entre 3 et 10"))
except TypeError:
  print "Entrez un entier!" 

Quelle exception est levée lorsqu’il plante (quand tu ferme turtle) ?

bonjour, et merci pour ta réponse.
alors oui en effet je n’étais pas encore arrivée au chapitre où la personne parlait du module math :slight_smile:
je ne referai plus cette erreur !

je te remercie de te pencher sur mon problème.

  • dans le premier cas, si je run mon programme, la fenêtre shell s’ouvre, puis au dessus la fenêtre turtle.
    le graphique se fait. Ensuite la fenêtre turtle est figée (ne répond pas). Donc je force la fermeture de turtle, et la fenêtre du shell reste ouverte derrière.

  • dans le 2ème cas : je run le programme, le fenêtre shell s’ouvre et au dessus la fenêtre turtle. Je dois cliquer dans la fenêtre shell qui attend ma réponse, que j’entre, et rien d’autre ne se passe, la fenêtre turtle ne répond pas.

mais bon, ça doit juste être un bug débile pour m’embêter !

à tout hasard : Python 3.2 (r32:88445, Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] on win32

edit : j’essairai avec une autre bécane plus tard, là je suis sur un mini pc sous seven starter !

Python 3.2 (r32:88445, Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] on win32

C’est les info de build.

J’ai fais le test sur python 2.7 et dans les deux cas chez moi cela joue.

Bon, alors soit c’est mon python, soit mon pc :slight_smile:
Merci pour ton aide ! :kiss: