如何用IronPython / Python给开发人员留下深刻印象

时间:2009-11-10 13:49:53

标签: python ironpython

我需要一个IronPython \ Python示例,它将向C#/ VB.NET开发人员展示这种语言的真实性。

我正在寻找一个易于理解的代码片段或我可以用来演示Python功能的应用程序。

有什么想法吗?

13 个答案:

答案 0 :(得分:19)

Peter Norvig的spelling corrector在21行Python 2.5中。

答案 1 :(得分:9)

重写IronPython中的任何小型C#应用程序,并向他们展示它花了多少行代码。如果那不令人印象深刻,我不知道是什么。

我指的是您的一个内部应用。

答案 2 :(得分:6)

我会快速演示一些微不足道的东西(至少在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
...

这展示了基本列表和字典类的外观,列表推导如何工作,命名参数,lambda表达式,交互式解释器的有用性,以及它在七行代码中完成了相当复杂的任务。

修改

哦,如果你使用生成器表达式设置letters,我会展示代码是如何工作的:

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

......也就是说,完全一样。

答案 3 :(得分:4)

在最基本的层面上,您可以在C#和Python中显示字符串反转程序。

在C#中:

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

在Python中:

s[::-1]

我觉得你应该演示多个例子,而不仅仅是一个。从像上面那样简单的东西构建,然后转向更复杂的东西。

答案 4 :(得分:4)

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

答案 5 :(得分:3)

简单但很酷的发电机,也许?

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

答案 6 :(得分:3)

鸭子打字示范怎么样?例如,将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()

答案 7 :(得分:3)

我必须同意Geo。在IronPython中编写的同一个应用程序旁边显示一个C#或VB应用程序。当我完成IronPython演讲时,我已经成功地将C#代码转换为Python。这是一个非常戏剧性的演示。

我也非常喜欢炫耀鸭子打字如何使你的代码更易于测试。

答案 8 :(得分:2)

生成器,定义迭代器,简单

http://ttsiodras.googlepages.com/yield.html

答案 9 :(得分:2)

您可以使用CherryPy的helloworld示例:

import cherrypy

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

cherrypy.quickstart(HelloWorld())

答案 10 :(得分:1)

素数生成器怎么样。

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

答案 11 :(得分:1)

DataGridView Custom Formatting上向他们展示IronPython食谱中的一个例子。它不是非常华丽,但它是每个人都会熟悉的东西,因为几乎每个人都构建了一个带有gridview的应用程序(或者想要这样做)。

演示中最重要的部分是代码演练,您可以在其中指出事情比C#更简洁,更类似于VB。

确保更改菜谱中的示例以显示Python中包含的电池。也许使用os模块获取目录列表,并使用文件名,大小,创建日期等填充网格。

答案 12 :(得分:1)

由于IronPython在运行时向类型添加新成员的能力,这样做的可能性让我印象深刻

http://ironpython-resource.com/post/2008/08/23/IronPython-Dynamically-creating-objects-and-binding-them-to-a-form.aspx