Как произвести впечатление на разработчиков с помощью IronPython/Python

Мне нужен пример IronPython\Python, который продемонстрировал бы разработчикам С#/VB.NET, насколько это замечательно.

Я ищу фрагмент кода легко понятный, который можно использовать для демонстрации возможностей Python.

Любые мысли?

Ответ 1

Я бы сделал быструю демонстрацию чего-то тривиального (по крайней мере, на Python), но прохладно в IDLE. Например:

>>> text = # some nice long text, e.g. the Gettysburg Address
>>> letters = [c.lower() for c in text if c.isalpha()]
>>> letters
    ['f', 'o', 'u', 'r', 's', 'c', 'o', 'r', 'e', 'a', 'n', 'd', 's', 'e', 'v', 'e',
    ...
>>> freq = {}
>>> for c in letters:
        freq[c] = freq.get(c, 0) + 1

>>> freq
    {'a': 102, 'c': 31, 'b': 14, 'e': 165, 'd': 58, 'g': 28, 'f': 27, 'i': 68, 'h': 80, 
    ...
>>> for c in sorted(freq.keys(), key=lambda x: freq[x], reverse=True):
        print c, freq[c]

e 165
t 126
a 102
...

Это показывает, как выглядят классы базового списка и словаря, как работают списки, имена, аргументы, лямбда-выражения, полезность интерактивного интерпретатора, и он выполняет довольно сложную задачу в семи строках кода.

Edit:

О, и тогда я расскажу, как работает код, если вы установили letters с помощью выражения генератора:

letters = (c.lower() for c in text if c.isalpha())

... то есть точно так же.

Ответ 3

Перепишите любое небольшое приложение С# в IronPython и покажите им, сколько строк кода вам понадобилось. Если это не впечатляет, я не знаю, что есть.

Я имею в виду одно из ваших внутренних приложений.

Ответ 4

На самом базовом уровне вы можете показать программу смены строк в С# и Python.

В С#:

public static string ReverseString(string s)
{
    char[] arr = s.ToCharArray();
    Array.Reverse(arr);
    return new string(arr);
}

В Python:

s[::-1]

Я чувствую, что вам нужно демонстрацию нескольких примеров, а не только одного. Создайте что-то простое, как выше, и перейдите к более сложным.

Ответ 5

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)

Говорящий клиент Twitter. Дополнительные примеры http://www.ironpython.info/index.php/Main_Page

Ответ 6

Что-то простое, но классное с генераторами, может быть?

def isprime(n):
    return all(n%x!=0 for x in range(2, int(n**0.5)+1))

def containsPrime(start, limit):
    return any(isPrime(x) for x in xrange(start, limit))

Ответ 7

Как насчет демонстрации утиного набора? Например, перенаправление StdOut на gui.

Или некоторые из исключительно полезных чистых библиотек python (SqlAlchemy помнит о моей работе, ваш пробег может меняться).

Некоторые из коротких битов синтаксиса также будут хороши, например:

Получите быстрый обзор большого набора данных:

print data[::1000]

Найдите все строки, начинающиеся с 'a':

[s for s in list_of_strings if s.startswith('a')]

Затем покажите им версию генератора:

the_as = (s for s in really_big_list_of_strings if s.startswith('a'))
the_as.next()

Ответ 8

Я должен согласиться с Geo. Покажите приложение С# или VB рядом с тем же приложением, написанным на IronPython. Когда я закончил переговоры с IronPython, у меня был большой успех, преобразовывая код С# в Python. Это делает очень драматичную презентацию.

Я также большой поклонник показать, как утиная печать делает ваш код более надежным.

Ответ 10

Вы можете использовать CherryPy пример helloworld:

import cherrypy

class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

cherrypy.quickstart(HelloWorld())

Ответ 11

Как насчет генератора простых чисел.

>>> 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]

Ответ 12

Покажите им пример из поваренной книги IronPython, как этот, на DataGridView Custom Formatting. Это не ужасно кричащий, но это то, о чем все будут знать, потому что почти все создали приложение с gridview (или хочет сделать это).

Самая важная часть вашей демонстрации - это прохождение кода, в котором вы указываете, что вещи менее подробные, чем С#, и более похожие на VB.

Обязательно измените пример из кулинарной книги, чтобы отобразить некоторые из батарей, входящих в состав Python. Возможно, используйте модуль os, чтобы получить список каталогов и заполнить сетку с именем файла, размером, созданной датой и т.д.