你的位置:首页 > ASP.net教程

[ASP.net教程]Python和C#基本算法实现对比


最近在学习python,很多入门的例子又写了一遍,基本上是C#和Python都写了一遍,对比发现语言真是相通啊,只是语法不同而已。

python开发也是用的VS,很好用,特别是代码段运行,选中一段python代码,Ctrl+E+E执行结果就出来了,跟装了TestDriven写C#也差不多,很不错!!!2016-03-23 22:31:21

python3.4的字符串格式化我发现跟C#一样的用法,然后就没有然后了,字符串不管什么都是这么写"{0}+{1}={2}".format(i,j,k),嘿嘿嘿......

join比较坑,必须是字符串数组

python程序里面有中文的话,要在文件开始标注编码为gbk,# coding=gbk

下面是基本基本算法案例:

1.斐波那契数

python

 1 def fib(n): 2   if(n == 1) or n == 2: 3     return 1 4   return fib(n - 1) + fib(n - 2) 5 print(fib(10)) 6  7  8 def fib(n): 9   if n == 1:10     return [1]11   if n == 2:12     return [1, 1]13   fibs = [1, 1]14   for i in range(2, n):15     fibs.append(fibs[-1] + fibs[-2])16   return fibs17 print(fib(10)) 

 

 输出结果:55,[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

C#

 1 public int Fib(int n) 2 { 3   if (n <= 0) 4   { 5     return n; 6   } 7   if (n == 1 || n == 2) 8   { 9     return 1;10   }11   return Fib(n - 1) + Fib(n - 2);12 }13 public string FibArr(int n)14 {15   if (n <= 0)16   {17     return n.ToString();18   }19   if (n == 1 || n == 2)20   {21     return "1,1";22   }23 24   List<int> fibList = new List<int>() { 1, 1 };25   for (int i = 2; i < n; i++)26   {27     fibList.Add(fibList[i - 1] + fibList[i - 2]);28   }29   return string.Join(",", fibList);30 }31 32 void Test()33 {34   Console.WriteLine(Fib(10));35   Console.WriteLine(FibArr(10));36 }

 

 输出结果:

55
1,1,2,3,5,8,13,21,34,55

2.水仙数

python

1 for x in range(100,1000):2   i = x / 1003   j = x % 100 / 104   k = x % 105   if(i ** 3 + j ** 3 + k ** 3 == x):6     print(x)

 

 C#

 1 for (int i = 100; i < 1000; i++) 2 { 3   int h = i / 100; 4   int t = i % 100 / 10; 5   int s = i % 10; 6   if (Math.Pow(h, 3) + Math.Pow(t, 3) + Math.Pow(s, 3) == i) 7   { 8     Console.WriteLine(i); 9   }10 }

 

 3.因式分解

Python

 例如:12=2*2*3

 1 # coding=gbk 2  3 n = int(input("输入数字:")) 4 print("n={0}".format(n)) 5 s = "" 6 for x in range(2,n + 1): 7  while x != n: 8    if(n % x == 0): 9      s+="{0}".format(x)10      s+="*"11      n = n / x12    else:13       break14 s+="{0}".format(int(n))15 print(s)

 

 4.求素数

python

 1 count = 0 2 pmarr = [] 3 ispm = True 4  5 from math import sqrt 6 for x in range(101,201): 7   k = int(sqrt(x)) 8   for i in range(2,k + 1): 9     if x % i == 0:10       ispm = False11       break12     ispm = True13   if(ispm):14     pmarr.append("%d" % x)15     count+=116 print(pmarr)17 print(count)

C#

 1 bool ispm = true; 2 int count = 0; 3 for (int i = 100; i < 200; i++) 4 { 5   int j = (int)Math.Sqrt(i) + 1; 6   for (int k = 2; k < j; k++) 7   { 8     if (i % k == 0) 9     {10       ispm = false;11       break;12     }13     ispm = true;14   }15   if (ispm)16   {17     Console.Write("{0} ", i);18     count++;19   }20 }21 Console.WriteLine("总数:{0}", count);

python执行效率或者语言特性可能不如C#,但动态语言特征及跨平台方面确实比C#好太多。

在爬虫方面的开发效率确实很快,目前正在看python爬虫算法,准备写一版C#出来 

学习做笔记的习惯已经丢好久了,希望以后能慢慢的拾起来吧