程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> Python和C#基本算法實現對比

Python和C#基本算法實現對比

編輯:Python

最近在學習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

 def fib(n):
     if(n == 1) or n == 2:
         return 1
     return fib(n - 1) + fib(n - 2)
 print(fib(10))
 
 
 def fib(n):
     if n == 1:
         return [1]
     if n == 2:
         return [1, 1]
     fibs = [1, 1]
     for i in range(2, n):
         fibs.append(fibs[-1] + fibs[-2])
     return fibs
 print(fib(10)) 

 

 輸出結果:55,[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

C#

 public int Fib(int n)
 {
     if (n <= 0)
     {
         return n;
     }
     if (n == 1 || n == 2)
     {
         return 1;
     }
     return Fib(n - 1) + Fib(n - 2);
 }
 public string FibArr(int n)
 {
     if (n <= 0)
     {
         return n.ToString();
     }
     if (n == 1 || n == 2)
     {
         return "1,1";
     }
 
     List<int> fibList = new List<int>() { 1, 1 };
     for (int i = 2; i < n; i++)
     {
         fibList.Add(fibList[i - 1] + fibList[i - 2]);
     }
     return string.Join(",", fibList);
 }
 
 void Test()
 {
     Console.WriteLine(Fib(10));
     Console.WriteLine(FibArr(10));
 }

 

 輸出結果:

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

2.水仙數

python

  for x in range(100,1000):
     i = x / 100
      j = x % 100 / 10
      k = x % 10
      if(i ** 3 + j ** 3 + k ** 3 == x):
          print(x)

 

 C#

 for (int i = 100; i < 1000; i++)
 {
     int h = i / 100;
     int t = i % 100 / 10;
     int s = i % 10;
     if (Math.Pow(h, 3) + Math.Pow(t, 3) + Math.Pow(s, 3) == i)
     {
         Console.WriteLine(i);
     }
 }

 

 3.因式分解

Python

 例如:12=2*2*3

 # coding=gbk
 
 n = int(input("輸入數字:"))
 print("n={0}".format(n))
 s = ""
 for x in range(2,n + 1):
    while x != n:
        if(n % x == 0):
            s+="{0}".format(x)
            s+="*"
            n = n / x
        else:
             break
 s+="{0}".format(int(n))
 print(s)

 

 4.求素數

python

 count = 0
 pmarr = []
 ispm = True
 
 from math import sqrt
 for x in range(101,201):
     k = int(sqrt(x))
     for i in range(2,k + 1):
         if x % i == 0:
             ispm = False
             break
         ispm = True
     if(ispm):
         pmarr.append("%d" % x)
         count+=1
 print(pmarr)
 print(count)

C#

 bool ispm = true;
 int count = 0;
 for (int i = 100; i < 200; i++)
 {
     int j = (int)Math.Sqrt(i) + 1;
     for (int k = 2; k < j; k++)
     {
         if (i % k == 0)
         {
             ispm = false;
             break;
         }
         ispm = true;
     }
     if (ispm)
     {
         Console.Write("{0} ", i);
         count++;
     }
 }
 Console.WriteLine("總數:{0}", count);

python執行效率或者語言特性可能不如C#,但動態語言特征及跨平台方面確實比C#好太多。

在爬蟲方面的開發效率確實很快,目前正在看python爬蟲算法,准備寫一版C#出來 

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved