Python和C#基本算法实现对比

时间:2022-07-04 20:27:20

最近在学习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 <= )
{
return n;
}
if (n == || n == )
{
return ;
}
return Fib(n - ) + Fib(n - );
}
public string FibArr(int n)
{
if (n <= )
{
return n.ToString();
}
if (n == || n == )
{
return "1,1";
} List<int> fibList = new List<int>() { , };
for (int i = ; i < n; i++)
{
fibList.Add(fibList[i - ] + fibList[i - ]);
}
return string.Join(",", fibList);
} void Test()
{
Console.WriteLine(Fib());
Console.WriteLine(FibArr());
}

输出结果:

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#

 for (int i = ; i < ; i++)
{
int h = i / ;
int t = i % / ;
int s = i % ;
if (Math.Pow(h, ) + Math.Pow(t, ) + Math.Pow(s, ) == 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 = ;
for (int i = ; i < ; i++)
{
int j = (int)Math.Sqrt(i) + ;
for (int k = ; k < j; k++)
{
if (i % k == )
{
ispm = false;
break;
}
ispm = true;
}
if (ispm)
{
Console.Write("{0} ", i);
count++;
}
}
Console.WriteLine("总数:{0}", count);

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

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

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