您的位置:首页 > 编程语言 > Python开发

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

2016-03-23 23:27 585 查看
最近在学习python,很多入门的例子又写了一遍,基本上是C#和Python都写了一遍,对比发现语言真是相通啊,只是语法不同而已。

python开发也是用的VS,很好用,特别是代码段运行,选中一段python代码,Ctrl+E+E执行结果就出来了,跟装了TestDriven写C#也差不多,很不错!!!2016-03-2322:31:21

python3.4的字符串格式化我发现跟C#一样的用法,然后就没有然后了,字符串不管什么都是这么写"{0}+{1}={2}".format(i,j,k),嘿嘿嘿......

join比较坑,必须是字符串数组

python程序里面有中文的话,要在文件开始标注编码为gbk,#coding=gbk

下面是基本基本算法案例:

1.斐波那契数

python

deffib(n):
if(n==1)orn==2:
return1
returnfib(n-1)+fib(n-2)
print(fib(10))

deffib(n):
ifn==1:
return[1]
ifn==2:
return[1,1]
fibs=[1,1]
foriinrange(2,n):
fibs.append(fibs[-1]+fibs[-2])
returnfibs
print(fib(10))


输出结果:55,[1,1,2,3,5,8,13,21,34,55]

C#

publicintFib(intn)
{
if(n<=0)
{
returnn;
}
if(n==1||n==2)
{
return1;
}
returnFib(n-1)+Fib(n-2);
}
publicstringFibArr(intn)
{
if(n<=0)
{
returnn.ToString();
}
if(n==1||n==2)
{
return"1,1";
}

List<int>fibList=newList<int>(){1,1};
for(inti=2;i<n;i++)
{
fibList.Add(fibList[i-1]+fibList[i-2]);
}
returnstring.Join(",",fibList);
}

voidTest()
{
Console.WriteLine(Fib(10));
Console.WriteLine(FibArr(10));
}


输出结果:

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

2.水仙数

python


forxinrange(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(inti=100;i<1000;i++)
{
inth=i/100;
intt=i%100/10;
ints=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=""
forxinrange(2,n+1):
whilex!=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

frommathimportsqrt
forxinrange(101,201):
k=int(sqrt(x))
foriinrange(2,k+1):
ifx%i==0:
ispm=False
break
ispm=True
if(ispm):
pmarr.append("%d"%x)
count+=1
print(pmarr)
print(count)


C#

boolispm=true;
intcount=0;
for(inti=100;i<200;i++)
{
intj=(int)Math.Sqrt(i)+1;
for(intk=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#出来

学习做笔记的习惯已经丢好久了,希望以后能慢慢的拾起来吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: