Python
语言,我以前学过,但是由于好久没用,所以忘得差不多了,最近又重新学习,语法已经通了,只剩下类库的应用了。总的感觉就是
Python
真的很简捷、灵活,而且具有很丰富和强大的类库。举例如下:
>>> a,b=3,5
>>> a,b=b,a
就这么简单就可以实现交换两个数。
>>> [x for x in range(21) if x%2==0]
这是实现选取
0
到
20
之间的偶数。
>>> if 5>a>1:
... print 'a
在
1-5
之间
'
这种判断法在
C/C++
等中可是不可以的哦。
class First:
def __init__(self,temp):
self.temp=temp;
def out(self):
print self.temp
fir=First(5);
fir.out();
这是一个简单的类的实现。
八皇后问题 :
在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
下面是用
Python
实现的求解八皇后的两种解法:
#
八皇后问题递归解法
class EQueen:
num=0 #
保存解的个数
data=range(0,8) #
保存解
def isPlace(self,t): #
判断t是否可以放置
for i in range(0,t):
if EQueen.data[i]==EQueen.data[t]:
return 0
if abs(EQueen.data[i]-EQueen.data[t])==abs(i-t):
return 0
return 1
def queen(self,t): #
对t进行操作
if t==8:
EQueen.num+=1
print EQueen.data
else:
for i in range(0,8):
EQueen.data[t]=i
if self.isPlace(t):
self.queen(t+1)
#
八皇后问题非递归解法
class EQueeny:
num=0
data=range(0,8)
def isPlace(self,t):
for i in xrange(0,t):
if EQueeny.data[i]==EQueeny.data[t]:
return 0
if abs(EQueeny.data[i]-EQueeny.data[t])==abs(i-t):
return 0
return 1
def queen(self):
i=0
EQueeny.data[i]=-1
while i>=0:
EQueeny.data[i]+=1
while EQueeny.data[i]<8 and not self.isPlace(i):
EQueeny.data[i]+=1
if EQueeny.data[i]<8:
if i==7:
print EQueeny.data
EQueeny.num+=1
else:
i+=1
EQueeny.data[i]=-1
else:
i-=1
#
非递归解法
eqy=EQueeny()
eqy.queen()
print eqy.num
print '*****************'
#
递归解法
eq=EQueen()
eq.queen(0)
print eq.num
推荐网站:好巴鹿(http:// www.haobalu.com )