问题一:做为Apple Store App独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用Python如何生成200个激活码(或者优惠券)?
简介:通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准,亦为开放软件基金会组织在分散式计算环境领域的一部份。
UUID的目的,是让分散式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的UUID。在这样的情况下,就不需考虑资料库建立时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3档案系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。另外我们也可以在e2fsprogs套件中的UUID函式库找到实现。
分析:这里参考(http://www.blogjava.net/BearRui/archive/2010/10/19/unique_random_code.html)
主键+随机码的方式.
这种方法优点:使用也比较简单,不用直接去查询数据库,而最大的优点是查询的时候,可以根据邀请码直接得到主键id, 然后根据id去数据库查询(速度很快),再比较查询出来的邀请码和用户提交的邀请码是否一致。
- 生成:id(数据库primary key )->16进制 + "L(标识符)" +随机码
- 获取id:获取16进制的id再转回10进制
import random import string def activation_code(id,length = 10): ''' id+L+随机码 string模块中的三个函数为:string.letters,string.printable.string.printable ''' prefix = hex(int(id))[2:]+'L' #prefix为前缀 length =length -len(prefix) chars = string.ascii_letters+string.digits return prefix + ''.join([random.choice(chars) for i in range(length)]) def get_id(code): '''hex to dec''' return str(int(code.upper(),16)) if __name__ =="__mian__": for i in range(10,500,35): code = activation_code(i) id_hex = code.split('L')[0] id = get_id(id_hex) print (code,id) if __name__=="__main__": for i in range(10,200,35): code = activation_code(i) id_hex = code.split('L')[0] id = get_id(id_hex) print (code,id) #print(code)
问题二:任一个英文的纯文本文件,统计其中的单词出现的个数
1.strip()没有参数时,删除空白符,包括、n\r\t空格,strip()函数只能用于str类型,list类型等不可用。
2.split()用于分割,分隔符可以自己制定
def world_count(inputfile): if os.path.isfile(inputfile) !=True: print("inputfile not exits") sys.exit() word_count = 0 words = open(inputfile , "r").readlines() for word in words: print("word: %s" %word) temp = word.strip().split('') word_count += len(temp) print("word count:%s" %word_count) return word_count
问题三:用 Python 写一个爬图片的程序
这个就是一个简单的爬虫,只要模拟浏览器即可
import urllib.request import re url = 'http://tieba.baidu.com/p/2166231880' headers = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36") opener = urllib.request.build_opener() opener.assheaders = [headers] urllib.request.install_opener(opener) data = urllib.request.urlopen(url).read() data2 = data.decode("utf-8","ignore") pattern = '' allurl = re.compile(pattern).findall(data2) #print(allurl) for i in range(0,len(allurl)): #print(allurl[i]) thisimg = allurl[i] file = "D:/pycode/"+str(i)+".jpg" urllib.request.urlretrieve(thisimg,filename = file) print("第" + str(i) + "次爬去成功")
问题四:一个HTML文件,找出里面的正文
问题五:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。
import os import string import re os.chdir('C:/workspace') fh=open('test_test.py') read_fh=fh.readlines() fh.close() number_code=0 number_empty=0 number_note=0 pattern='.*#' #正则匹配模式 for x in read_fh: if '#' in x: #计算注释数目 if re.findall(pattern,x)[0][:-1].isspace() or re.findall(pattern,x)[0][:-1]=='': number_note+=1 else: number_code+=1 elif x.isspace(): number_empty+=1 else: number_code+=1 print('code number is %d'%(number_code+number_empty+number_note)) print('empty number is %d'%number_empty) print('note number is %d'%number_note)
问题六:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
d = [1,2,3,4] def threenums(): print(None) count = 0 nums = [] for index1 in range(1,5): for index2 in range(1,5): for index3 in range(1,5): if index1 != index2 and index2 != index3 and index3 !=index1: num = 100*index1 +10*index2 +index3 if num not in nums: nums.append(num) count +=1 print(count) print(nums)
问题七:
企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%,
高于100万元时,超过100万元的部分按1%提成,
从键盘输入当月利润I,求应发放奖金总数?
def reward(profit): reward = 0.0 if profit <=100000: return profit*0.1 elif profit <=20 and profit >10: return (profit-10000)*0.075+100000*0.1 elif profit <=40 and profit >20: return (profit-10000)*0.05+100000*0.1+10000*0.075 elif profit <=60 and profit >40: return (profit-10000)*0.03+100000*0.1+10000*0.075+100000*0.05 elif profit <=100 and profit >60: return (profit-10000)*0.015+100000*0.1+10000*0.075+100000*0.05+100000*0.03 else: return (profit-10000)*0.01+100000*0.1+10000*0.075+100000*0.05+100000*0.03+100000*0.015 if __name__ == "__mian__": profit = int(input("请输入当月利润:")) print(reward(profit))
问题八:一个整数,
它加上100后是一个完全平方数,再加上168又是一个完全平方数,
请问该数是多少?
import math for i in range(10000): x = int(math.sqrt(i+100)) y = int(math.sqrt(i+168)) if (x*x == i+100) and (y*y == i+168): print(i)
(未完待续,有时间会继续上传,http://www.cnblogs.com/bakoom/p/5251293.html)