def hot_pot(names, num): # create a Queue q = Queue() _ = [q.enqueue(i) for i in names] count = 0 while q.size()!=1: while count !=num: q.enqueue(q.dequeue()) count +=1 q.dequeue() return q.dequeue()
def hotPotato(namelist, num): q = Queue() for name in namelist: q.enqueue(name) while q.size() > 1: for i in range(num): q.enqueue(q.dequeue()) q.dequeue() return q.dequeue()
def hotPotato(namelist, num): simqueue = Queue() for name in namelist: simqueue.enqueue(name) while simqueue.size() > 1: for i in range(num): simqueue.enqueue(simqueue.dequeue()) simqueue.dequeue() return simqueue.dequeue()
def bfs(g, start): start.setDistance(0) start.setPred(None) vertQueue = Queue() vertQueue.enqueue(start) while (vertQueue.size() > 0): currentVert = vertQueue.dequeue() for nbr in currentVert.getConnections(): if (nbr.getColor() == 'white'): nbr.setColor('gray') nbr.setDistance(currentVert.getDistance() + 1) nbr.setPred(currentVert) vertQueue.enqueue(nbr) currentVert.setColor('black')
def hotPotato(namelist, num): simqueue = Queue() #create a new queue for name in namelist: simqueue.enqueue(name) while simqueue.size() > 1 : for i in range(num): simqueue.enqueue(simqueue.dequeue()) #the first in queue leaves the queue and enters again. #simqueue.dequeue() break return simqueue.dequeue()
def simulation(numSeconds, pagesPerMinute, stud): labprinter = Printer(pagesPerMinute) printQueue = Queue() waitingtimes = [] for currentSecond in range(numSeconds): if newPrintTask(stud): task = Task(currentSecond) printQueue.enqueue(task) if (not labprinter.busy()) and (not printQueue.isEmpty()): nexttask = printQueue.dequeue() waitingtimes.append(nexttask.waitTime(currentSecond)) labprinter.startNext(nexttask) labprinter.tick() averageWait = sum(waitingtimes)/len(waitingtimes) print('Average Wait %2.2f secs %2d tasks remaining.' % (averageWait, printQueue.size()))
def simulation(num_seconds, page_rate): labPrinter = Printer(page_rate) printerQueue = Queue() waitingTime = [] pages_number = 20 students_number = 10 for second in range(num_seconds): if newPrintTask(students_number): task = Task(second, pages_number) printerQueue.enqueue(task) if (not labPrinter.busy()) and (not printerQueue.isEmpty()): nextTask = printerQueue.dequeue() waitingTime.append(nextTask.waitingTime(second)) labPrinter.startNext(nextTask) labPrinter.tick() averageWait = sum(waitingTime) / len(waitingTime) print("Average Wait %6.2f secs %3d tasks remaining." % (averageWait, printerQueue.size()))
def isEmpty(self): return self.items == [] def enqueue(item): self.items.insert(0, item) def dequeue(): return self.items.pop() def size(): return len(self.items) q = Queue() q.enqueue(4) q.enqueue('dog') q.enqueue(True) print(q.size()) q.isEmpty() q.enqueue(8.4) q.dequeue() q.dequeue() q.size() from pythonds.basic.queue import Queue player = ['Aaron', 'Drew', 'Russel', 'Ben', 'Patrick', 'Eli'] def hotPotato(namelist, num):
def newPrintTask(): num = random.randrange(1, 181) if num == 180: return True else: return False for i in range(10): pagesPerMinute = 10 printer = Printer(pagesPerMinute) printQueue = Queue() # 计算平均等待时间,所以需要将所有的等待时间进行存储 waitingtimes = [] # 模拟的是一小时当中 60分 = 3600s for currentSecond in range(3600): if newPrintTask(): task = Task(currentSecond) printQueue.enqueue(task) if (not printer.busy()) and (not printQueue.isEmpty()): nexttask = printQueue.dequeue() waitingtimes.append(nexttask.waitTime(currentSecond)) printer.startNext(nexttask) printer.tick() # 平均等待时间 averageWatingTime = sum(waitingtimes) / len(waitingtimes) print("平均等待时间 %6.2f秒,剩下%3d任务" % (averageWatingTime, printQueue.size()))
def game(q, num): iter = 0 while q.size() != 1: tmp = q.dequeue() print(tmp) if iter != num: q.enqueue(tmp) else: iter = 0 iter += 1 return q.dequeue() q = Queue() q.enqueue('Bill') q.enqueue('Jhon') q.enqueue('Frank') q.enqueue('Ivan') q.enqueue('Fun') print('Победитель', game(q, 2)) ''' book example def hotPotato(namelist, num): simqueue = Queue() for name in namelist: simqueue.enqueue(name)
from pythonds.basic.queue import Queue q = Queue() print((q.enqueue('hello'))) print((q.enqueue('dog'))) print((q.enqueue(3))) print((q.dequeue()))
from pythonds.basic.queue import Queue from Chapter3_5 import Queue2 q1 = Queue() q2 = Queue2() #It is going to be checked the enqueue / dequeue in both queues. t1 = timeit.Timer("q1.enqueue(random.random())", "from __main__ import random, q1") t2 = timeit.Timer("q2.enqueue(random.random())", "from __main__ import random, q2") resEnqueue1 = [] resEnqueue2 = [] for i in range(1, 100000, 10000): for x in range(i): q1.enqueue(random.random()) q2.enqueue(random.random()) pt = t1.timeit(number=1000) pt2 = t2.timeit(number=1000) resEnqueue1.append(pt) resEnqueue2.append(pt2) print("Results of enqueue operation, first the given ADT, second our ADT") print(resEnqueue1) print(resEnqueue2) #Dequeue. We expect that our implementation is slower due the pop(0). t3 = timeit.Timer("q1.dequeue()", "from __main__ import q1") t4 = timeit.Timer("q2.dequeue()", "from __main__ import q2")
from pythonds.basic.queue import Queue q = Queue() print(q.isEmpty()) q.enqueue('dog') print(q)
(By.CLASS_NAME, 'load-more'))) load_more.click() time.sleep(2) except Exception, e: print "E1: ", str(e) break except Exception, e: print "E2 :", str(e) try: elem = driver.find_elements_by_class_name('snippet__link') except: print "\n_______NO Followers of %s__________\n" % user_name elem = [] for i in elem: url_q.enqueue(str(i.get_attribute('href'))) print "\n*******Network Fetched... Beginning the next crawl************\n" driver.quit() try: crawl() except Exception, e: print str(e) f = open('url_queue.txt', 'w') print >> f, url while not url_q.isEmpty(): print >> f, url_q.dequeue() f.close() driver.quit() '''Clicking the LOAD MORE button
def isEmpty(self): return self.items == [] def enqueue(self, item): self.items.insert(0, item) def dequeue(self): return self.items.pop() def size(self): return len(self.items) q = Queue() q.enqueue(1) q.size() q.isEmpty() # example, hotPotato / who will die from pythonds.basic.queue import Queue def hotPotato(namelist, num): simqueue = Queue() for name in namelist: simqueue.enqueue(name) while simqueue.size() > 1: for i in range(num): simqueue.enqueue(simqueue.dequeue())
s=wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'load-more'))) load_more.click() time.sleep(2) except Exception,e: print "E1: ",str(e) break except Exception,e: print "E2 :",str(e) try: elem=driver.find_elements_by_class_name('snippet__link') except: print "\n_______NO Followers of %s__________\n"%user_name elem=[] for i in elem: url_q.enqueue(str(i.get_attribute('href'))) print "\n*******Network Fetched... Beginning the next crawl************\n" driver.quit() try: crawl() except Exception,e: print str(e) f=open('url_queue.txt','w') print >>f,url while not url_q.isEmpty(): print >>f,url_q.dequeue() f.close() driver.quit() '''Clicking the LOAD MORE button c=1
class DouBanSpider(object): def __init__(self): # 创建一个队列用来保存进程获取到的数据 self.q = Queue() self.headers = { 'Cookie': 'll="118282"; bid=ctyiEarSLfw; ps=y; __yadk_uid=0Sr85yZ9d4bEeLKhv4w3695OFOPoedzC; dbcl2="155150959:OEu4dds1G1o"; as="https://sec.douban.com/b?r=https%3A%2F%2Fbook.douban.com%2F"; ck=fTrQ; _pk_id.100001.4cf6=c86baf05e448fb8d.1506160776.3.1507290432.1507283501.; _pk_ses.100001.4cf6=*; __utma=30149280.1633528206.1506160772.1507283346.1507290433.3; __utmb=30149280.0.10.1507290433; __utmc=30149280; __utmz=30149280.1506160772.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=223695111.1475767059.1506160772.1507283346.1507290433.3; __utmb=223695111.0.10.1507290433; __utmc=223695111; __utmz=223695111.1506160772.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); push_noty_num=0; push_doumail_num=0', 'Host': 'movie.douban.com', 'Referer': 'https://movie.douban.com/top250?start=225&filter=', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36', } def run(self, url): self.parse_page(url) def send_request(self, url): ''' 用来发送请求的方法 :return: 返回网页源码 ''' # 请求出错时,重复请求3次, i = 0 while i <= 3: try: print(u"[INFO]请求url:" + url) html = requests.get(url=url, headers=self.headers).content except Exception as e: print(u'[INFO] %s%s' % (e, url)) i += 1 else: return html def parse_page(self, url): ''' 解析网站源码,并采用xpath提取 电影名称和平分放到队列中 :return: ''' response = self.send_request(url) html = etree.HTML(response) # 获取到一页的电影数据 node_list = html.xpath("//div[@class='info']") for move in node_list: # 电影名称 title = move.xpath('.//a/span/text()')[0] # 评分 score = move.xpath( './/div[@class="bd"]//span[@class="rating_num"]/text()')[0] # 将每一部电影的名称跟评分加入到队列 self.q.enqueue(score + "\t" + title) def main(self): base_url = 'https://movie.douban.com/top250?start=' # 构造所有url url_list = [base_url + str(num) for num in range(0, 225 + 1, 25)] # 创建协程并执行 job_list = [gevent.spawn(self.run, url) for url in url_list] # 让线程等待所有任务完成,再继续执行。 gevent.joinall(job_list) while not self.q.isEmpty(): print(self.q.dequeue())
def enqueue(self, item): self.items.insert(0, item) def dequeue(self): return self.items.pop() def isEmpty(Self): return self.items == [] def size(self): return len(self.items) q = Queue() q.enqueue("a") q.enqueue("b") q.enqueue("c") print(q.size()) print(q.dequeue()) print(q.size()) ''' 马铃薯游戏(击鼓传花),选定一个人作为开始的人,数到num个人,此人淘汰 ['零','一','二','三','四','五','六','七','八','九'] 七 ['八','九','零','一','二','三','四','五','六'] 五 ['六','八','九','零','一','二','三','四'] 四 ['六','八','九','零','一','二','三'] 六 ['八','九','零','一','二','三'] 九 ['零','一','二','三','八'] 二