zoukankan      html  css  js  c++  java
  • 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#出来 

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

  • 相关阅读:
    FullCalendar日历插件说明文档
    Git忽略规则及.gitignore规则不生效的解决办法
    学习git config配置文件
    拼接最长回文串
    Gildong owns a bulgogi restaurant
    前m大的数
    求水洼(dfs)
    循环数组的最大子段和
    求叶子节点
    周期
  • 原文地址:https://www.cnblogs.com/cgyqu/p/5313689.html
Copyright © 2011-2022 走看看