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

for x in range(100,1000):
    i = int(x / 100)
    j = int((x % 100) / 10)
    k = int(x % 10)
    if((i ** 3 + j ** 3 + k ** 3) == x):
        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#出來 

學習做筆記的習慣已經丟好久了,希望以后能慢慢的拾起來吧


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



【C#】—vb和c#實現對比 php和C#的yield實現對比 A*算法的C#實現 基本算法C#實現 C#實現A*算法 c# MACD 算法實現 基於C#的通用A*算法實現 c# KDJ算法實現 RSA算法實現(C#) Dijkstra算法C#實現
 
粤ICP备14056181号  © 2014-2021 ITdaan.com