剧情提要:
阿伟看到了一本比较有趣的书,是关于《计算几何》的,2008年由北清派出版。很好奇
它里面讲了些什么,就来看看啦。
正剧开始:
星历2016年07月25日 10:50:44, 银河系厄尔斯星球中华帝国江南行省。
本节到此结束,欲知后事如何,请看下回分解。
阿伟看到了一本比较有趣的书,是关于《计算几何》的,2008年由北清派出版。很好奇
它里面讲了些什么,就来看看啦。
正剧开始:
星历2016年07月25日 10:50:44, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究[计算几何]]。
<span style="font-size:18px;">###
# @usage 栈
# @author mw
# @date 2016年07月25日 星期一 10:51:53
# @param
# @return
#
###
class Stack:
def info(self):
s = '[';
for x in self:
s+=repr(x)+', ';
if (len(s) > 2):
s = s[:-2]+']';
else:
s += ']';
print(s);
def __len__(self):
return len(self.items);
def __iter__(self):
for i in range(len(self.items)):
yield self.items[i];
#初始化
def __init__(self):
self.items = []
def pop(self):
if self.isEmpty():
raise RuntimeError("Attempt to pop an empty stack")
topIdx = len(self.items)-1
item = self.items[topIdx]
del self.items[topIdx]
return item
def push(self,item):
self.items.append(item)
def top(self):
if self.isEmpty():
raise RuntimeError("Attempt to get top of empty stack")
topIdx = len(self.items)-1
return self.items[topIdx]
def isEmpty(self):
return len(self.items) == 0
def find(self, item, start = 0):
for i in range(start, len(self.items)):
if (self.items[i] == item):
return i;
return -1;
def __contains__(self, item):
for i in range(len(self.items)):
if (self.items[i] == item):
return True;
return False;
</span>
<span style="font-size:18px;">def main():
#计时开始
startTime = time.clock();
s = Stack()
lst = list(range(10))
lst2 = []
for k in lst:
s.push(k)
if s.top() == 9:
print("Test 1 Passed")
else:
print("Test 1 Failed")
s.info();
if 5 in s:
print('In');
if 100 in s:
print('In');
pos = s.find(3);
print(pos);
pos = s.find(1000);
print(pos);
while not s.isEmpty():
lst2.append(s.pop())
lst2.reverse()
if lst2 != lst:
print("Test 2 Failed")
else:
print("Test 2 Passed")
try:
s.pop()
print("Test 3 Failed")
except RuntimeError:
print("Test 3 Passed")
except:
print("Test 3 Failed")
try:
s.top()
print("Test 4 Failed")
except RuntimeError:
print("Test 4 Passed")
except:
print("Test 4 Failed")
s.info();
s.push(100);
s.info();
print(len(s));
#计时结束
endTime = time.clock();
#打印结果
print('操作用时:{0:.3e} s'.format(endTime-startTime));</span>
本节到此结束,欲知后事如何,请看下回分解。