我需要一个IronPython \ Python示例,它将向C#/ VB.NET开发人员展示这种语言的真实性。
我正在寻找一个易于理解的代码片段或我可以用来演示Python功能的应用程序。
有什么想法吗?
答案 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)
生成器,定义迭代器,简单
答案 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在运行时向类型添加新成员的能力,这样做的可能性让我印象深刻