无限循环如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例:#!/usr/bin/python# -*- coding: UTF-8 -*-var = 1while var == 1 : # 该条件永远为true,循环将无限执行下去 num = raw_input("Enter a number :") print "You entered: ", numprint "Good bye!"以上实例输出结果:Enter a number :20You entered: 20Enter a number :29You entered: 29Enter a number :3You entered: 3Enter a number between :Traceback (most recent call last): File "test.py", line 5, in <module> num = raw_input("Enter a number :")KeyboardInterrupt注意:以上的无限循环你可以使用 CTRL+C 来中断循环。python while 1 vs while TruePython 3.0之前,他们的执行是不同的:while 1,python会进行优化,每次循环是不会去检查1的条件,因此性能会好而while True,在python 3k前,True不是保留字,用户可以True=0,所以,每次还要比较True的值Python 3.0之后,True/False都变成了保留字,>>> True = 10会报错因此,python 3后,while 1和while True效果一样,

本文以实例形式简述了Python实现字符串排序的方法,是Python程序设计中一个非常实用的技巧。分享给大家供大家参考之用。具体方法如下:一般情况下,python中对一个字符串排序相当麻烦:一、python中的字符串类型是不允许直接改变元素的。必须先把要排序的字符串放在容器里,如list。二、python中的list容器的sort()函数没返回值。所以在python中对字符串排序往往需要好几行代码。具体实现方法如下:>>> s = "string">>> l = list(s)>>> l.sort()>>> s = "".join(l)>>> s'ginrst'对于刚从C/C++等语言转过来的程序员往往会觉得很习惯,因为在C/C++里这些都是一行语句可以搞定的事情。因此,这里给出了一个简单的字符串排序方法。实现代码如下:>>> s = "string">>> s = "".join((lambda x:(x.sort(),x)[1])(list(s)))>>> s'ginrst'因为用了lambda,稍为有点难理解,但想通了就好了。

目前还没有更好的方法来追写Excel,lorinnn在网上搜索到以及之后用到的方法就是使用第三方库xlutils来实现了这个功能,主体思想就是先复制一份Sheet然后再次基础上追加并保存到一份新的Excel文档中去。使用xlutils代码实现如下:# -*- coding: utf-8 -*- ''' Created on 2012-12-17 @author: walfred @module: XLRDPkg.write_append @description: ''' import os from xlutils.copy import copy import xlrd as ExcelRead def write_append(file_name): values = ["Ann", "woman", 22, "UK"] r_xls = ExcelRead.open_workbook(file_name) r_sheet = r_xls.sheet_by_index(0) rows = r_sheet.nrows w_xls = copy(r_xls) sheet_write = w_xls.get_sheet(0) for i in range(0, len(values)): sheet_write.write(rows, i, values[i]) w_xls.save(file_name + '.out' + os.path.splitext(file_name)[-1]); if __name__ == "__main__":

在大的互联网公司干技术的基本都会碰到测试、预发布、线上这种多套环境的,来实现测试和线上正式环境的隔离,这种情况下,就难免会碰到秀逗了把测试的链接发布到线上的情况,一般这种都是通过一些测试的检查工具来检查链接来规避风险的。前两天跟了一个问题也是这个情况,开发疏忽把日常url发布到线上了。但是测试那边没有自动化的监控工具,导致没有及时发现,由于最近正好在看python,后来处理完回家就想用python做个简单的监控。 大略思路是:用python写一个脚本来分析网页里的所有url,看是否包含日常的链接,然后把脚本放到crontab里跑定时任务,10分钟跑一次检查。如果发现非法链接,就发告警邮件给相关人员。脚本代码100行左右,比较好理解,贴上代码。 本来想用beautifulsoup,不过考虑到安装三方库麻烦,所以还是用自带的sgmllib来,不需要关心库。发邮件函数没有实现,根据各自的smtp服务器实现以下即可。 复制代码 代码如下: #!/usr/bin/env python #coding:UTF-8 import urllib2 from sgmllib import SGMLParser import smtplib import time #from email.mime.text import MIMEText #from bs4 import BeautifulSoup #import re class UrlParser(SGMLParser): urls = [] def do_a(self,attrs): '''''parse tag a''' for name,value in attrs: if name=='href': self.urls.append(value) else: continue def do_link(self,attrs): '''''parse tag link''' for name,value in attrs: if name=='href': self.urls.append(value); else: continue def checkUrl(checkurl, isDetail): '''''检查checkurl对应的网页源码是否有非法url''' parser = UrlParser() page = urllib2.urlopen(checkurl) content = page.read() #content = unicode(content, "gb2312").encode("utf8") parser.feed(content) urls = parser.urls dailyUrls = [] detailUrl = "" for url in urls: if 'daily' in url: dailyUrls.append(url); if not detailUrl and not isDetail and 'www.bc5u.com' in url: detailUrl = url page.close() parser.close() if isDetail: return dailyUrls else: return dailyUrls,detailUrl def sendMail(): '''''发送提醒邮件''' pass def log(content): '''''记录执行日志''' logFile = 'checkdailyurl.log' f = open(logFile,'a') f.write(str(time.strftime("%Y-%m-%d %X",time.localtime()))+content+'\n') f.flush() f.close() def main(): '''''入口方法''' #检查ju url = "www.bc5u.com" dailyUrls,detailUrl=checkUrl(url, False) if dailyUrls: #检查到daily链接,发送告警邮件 sendMail() log('check: find daily url') else: #没检查到daily链接,不处理 log('check: not find daily url') #检查judetail dailyUrls=checkUrl(detailUrl, True) if dailyUrls: #检查到daily链接,发送告警邮件 log('check: find daily url') sendMail() else: #没检查到daily链接,不处理 log('check: not find daily url') if __name__ == '__main__':

问题:例如我们要选从不同省份选取一个号码,每个省份的权重不一样,直接选随机数肯定是不行的了,就需要一个模型来解决这个问题。简化成下面的问题: 字典的key代表是省份,value代表的是权重,我们现在需要一个函数,每次基于权重选择一个省份出来{"A":2, "B":2, "C":4, "D":10, "E": 20}解决:这是能想到和能看到的最多的版本,不知道还没有更高效好用的算法。#!/usr/bin/env python # -*- coding: utf-8 -*- #python2.7x #random_weight.py #author: [email protected] 2014-10-11 ''''' 每个元素都有权重,然后根据权重随机取值 输入 {"A":2, "B":2, "C":4, "D":10, "E": 20} 输出一个值 ''' import random import collections as coll data = {"A":2, "B":2, "C":4, "D":6, "E": 11} #第一种 根据元素权重值 "A"*2 ..等,把每个元素取权重个元素放到一个数组中,然后最数组下标取随机数得到权重 def list_method(): all_data = [] for v, w in data.items(): temp = [] for i in range(w): temp.append(v) all_data.extend(temp) n = random.randint(0,len(all_data)-1) return all_data[n] #第二种 也是要计算出权重总和,取出一个随机数,遍历所有元素,把权重相加sum,当sum大于等于随机数字的时候停止,取出当前的元组 def iter_method(): total = sum(data.values()) rad = random.randint(1,total) cur_total = 0 res = "" for k, v in data.items(): cur_total += v if rad<= cur_total: res = k break return res def test(method): dict_num = coll.defaultdict(int) for i in range(100): dict_num[eval(method)] += 1 for i,j in dict_num.items(): print i, j if __name__ == "__main__": test("list_method()") print "-"*50 test("iter_method()") 一次执行的结果A 4 C 14 B 7 E 44 D 31 -------------------------------------------------- A 8 C 16 B 6 E 43 D 27 思路:思路都很原始可以参考下面的连接,还有别的好方法一起交流!!代码: https://gist.github.com/orangle/d83bec8984d0b4293710参考:http://www.jb51.net/article/65060.htmhttp:

分类:腾博会手机版下载

时间:2016-10-04 15:11:16