Python和C#基本算法实现对比
Posted cgyqu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 fibs 17 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 / 100 3 j = x % 100 / 10 4 k = x % 10 5 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 / x 12 else: 13 break 14 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 = False 11 break 12 ispm = True 13 if(ispm): 14 pmarr.append("%d" % x) 15 count+=1 16 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#出来
学习做笔记的习惯已经丢好久了,希望以后能慢慢的拾起来吧
以上是关于Python和C#基本算法实现对比的主要内容,如果未能解决你的问题,请参考以下文章