J'ai besoin d'un exemple d'ironpython \ Python qui montrerait des développeurs C # / VB.NET à quel point cette langue est géniale. p>
Je recherche une Toutes les pensées? P>
13 Réponses :
Peter Norvig's Correcteur d'orthographe dans 21 lignes de Python 2.5. P>
C'est une application incroyable - mais je devrais expliquer beaucoup pour que le public puisse comprendre ce qui se passe là-bas, j'ai besoin de quelque chose de plus simple.
FWIW, à DeviDaS London Michael Sparks l'expliqua assez de manière exhaustive en une heure et IMHO a fait une excellente introduction à Python.
S'il faut une heure pour expliquer un programme de 21 lignes, choisissez un programme différent!
J'ai bien peur qu'une heure soit un peu trop longue pour mes besoins
En fait, mis à part la méthode EDITS1 (qui crée des mots similaires pour un mot donné), ce n'est pas si difficile à comprendre.
En plus d'expliquer Python, l'algorithme d'orthographe devrait être expliquée, ce qui n'est pas l'objectif de l'affiche originale.
@Eol - True, mais c'est sûrement le cas pour tout peu de code non trivial, et il est à peine comme l'algorithme d'orthographe est massivement complexe.
En C # peut également être écrit écrit dans 21 lignes. CODEGRUNT.CO.UK/CODE/SPELL.CS
@alu, oui, mais regarde-le. : - /
Quelque chose de simple mais cool avec des générateurs, peut-être?
Joli. La compréhension et les générateurs de la liste seraient quelques-uns de mes points de départ dans la projection de Python.
Réécrivez toute petite application C # à IronPython et montrez-leur combien de lignes de code qui vous a pris. Si cela n'est pas impressionnant, je ne sais pas ce qui est. P>
Je parle de l'une de vos applications internes. P>
La chose est de prendre la lisibilité sur moins de lignes n'importe quel jour.
Il est inévitable que le nombre de lignes diminuait considérablement. Je suis à peu près sûr que la lisibilité de Python n'aura pas à souffrir.
générateurs, définissant un itérateur, simple p>
Que diriez-vous d'un générateur de nombres premiers.
>>> def sieve(x): ... if x: return [ x[0] ] + sieve([ y for y in x if y % x[0] > 0 ]) ... return [] ... >>> sieve(range(2,100)) [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
Qu'en est-il d'une démonstration de dactylographie de canard? Redirection d'un stdouté à une interface graphique, par exemple.
ou certaines des bibliothèques python pures exceptionnellement utiles (Sqlalchemy Springs à l'esprit dans ma ligne de travail, votre kilométrage peut varier). P>
Une partie de la Les bits de syntaxe courts courts seraient bien également, par exemple: p>
Obtenez un aperçu rapide d'un grand jeu de données: p> trouver toutes les cordes qui Commencez par 'A': P> the_as = (s for s in really_big_list_of_strings if s.startswith('a'))
the_as.next()
montre-leur un exemple du livre de recettes IronPython comme celui-ci sur Formatage personnalisé de DataGridView . Ce n'est pas terriblement flashy, mais c'est quelque chose que tout le monde se familiarisera parce que tout le monde a construit une application avec une grille (ou veut le faire). P>
La partie la plus importante de votre démo sera la procédure pas à pas lorsque vous soulignez la façon dont les choses sont moins verbeuses que c # et plus similaires à VB. P>
Assurez-vous de modifier l'exemple du livre de recettes pour afficher certaines des piles incluses em> de Python. Peut-être utiliser le module os code> pour obtenir une liste de répertoires et peupler la grille avec nom de fichier, taille, date créée, etc. p>
Je ferais une démonstration rapide de quelque chose de trivial (en python, au moins) mais refroidir au ralenti. Par exemple:
letters = (c.lower() for c in text if c.isalpha())
C'est dommage que collections.Counter code> A> ferait tout le travail pour vous alors :)
Il me étonnait à quelle fréquence cela se passe-t-il que je construis quelque chose dans Python qui s'avère déjà existant.
Ok, ça n'existe pas en 2.6. Je me sens marginalement moins bête maintenant.
Vous pouvez utiliser Helloworld de Cherrypy S:
import cherrypy class HelloWorld(object): def index(self): return "Hello World!" index.exposed = True cherrypy.quickstart(HelloWorld())
Je dois d'accord Geo. Afficher une application C # ou VB à côté de la même application écrite à IronPython. Quand j'ai fait mes pourparlers d'ironpython, j'ai eu beaucoup de succès de la morphing C # dans Python. Cela fait une présentation très dramatique. P>
Je suis aussi un grand fan de montrer comment le typing du canard rend votre code plus testable. P>
Au niveau même de base, vous pouvez afficher un programme d'inversion de chaîne en C # et Python.
in c #: p> in python: p> s[::-1]
À une personne inconnue avec Python, s [:: - 1] semble probablement être en forme de chat.
import clr clr.AddReference('System.Speech') clr.AddReference('System.Xml') from System.Speech.Synthesis import SpeechSynthesizer from System.Net import WebClient from System.Xml import XmlDocument, XmlTextReader content = WebClient().DownloadString("http://twitter.com/statuses/public_timeline.xml") xmlDoc = XmlDocument() spk = SpeechSynthesizer() xmlDoc.LoadXml(content) statusesNode = xmlDoc.SelectSingleNode("statuses") for status in statusesNode: s = "<?xml version=\"1.0\"?><speak version=\"1.0\" xml:lang=\"en-US\"><break/>" s = s + status.SelectSingleNode("text").InnerText + "</speak>" spk.SpeakSsml(s) A talking Twitter client. For more examples http://www.ironpython.info/index.php/Main_Page
Ne serait pas aussi facile de le faire en utilisant c #?
Bonjour dror, je soupçonne que le C # serait plus loc. Cet exemple de démos facilite l'intégration .NET et montre la lisibilité de Python. D'accord pour dire que vous voudriez probablement un exemple de Stuff Ninja avec des listes ou des dictionnaires en plus de cela. Bonne chance!
La possibilité de le faire grâce à la capacité d'Ironthon à ajouter de nouveaux membres à un type au moment de l'exécution m'a impressionné p>
La langue est géniale. La vente difficile est une bonne aide IDE pour Python et .NET ensemble.
Sharpdevelop.net possède un excellent support IronPython et .NET.