基于python的一些算法实现
算法描述:生成四位随机的验证码,验证码的组成为大小写字母和数字。
思路:传说,此题有超过三十种方法解决,我现在来用其中一种,
随机组成,肯定是要导入random,这毫无疑问,既然是随机,而且,数字和字母的ASCII码值连续,那就定义能获取三种字符的随机变量,然后每一位的验证码都在这三个里面选择,也就解决了。代码如下:
import random def yzm(): #此处为random.randint(a,b),取a,b之间的随机整数 x1 = chr(random.randint(48,57)) x2 = chr(random.randint(66,90)) x3 = chr(random.randint(98,122)) #把上面的三个随机元素放在一个列表里,方便下面的random.choice()的调用 list_yzm = [x1,x2,x3] print(random.choice(list_yzm),end='') print(random.choice(list_yzm),end='') print(random.choice(list_yzm),end='') print(random.choice(list_yzm),end='') return #调用一次,就返回一个验证码,每次不同,所以就不添加结果了。。 yzm()#------------------------------------------------------------------------------------
算法描述:封装一个可以统计字符串中英文字母和数字出现的次数的函数
思路:其实也是使用ASCII码值,今天看到关于ASCII的东西有点多,所以,不论解什么题都想先用和ASCII有关的方法。。
好了,首先每个字母对应不同的ASCII码,每个数字也对应不同的ASCII码(废话),所以可以遍历字符串里面每个字符,然后判断其码值是介于数字之间,还是字母之间(要注意的是,字母因为区分大小写,有两段判断。)。代码如下:
def count_func(str1):#此处str就是形参,是要被传入函数并被操作的字符串 #定义数字和字母的初始化值
sum_digit = 0 sum_letter = 0 #开始遍历整个字符串,python里面的for循环很有趣,因为它是自增的,而Java和c中都要定义类似i++之类的语句来使循环继续执行 for i in str1: #判断当前字符的ASCII码值是否介于大小写的英文字母之间。【97,122】|【65,90】 if (ord(i) >= 97 and ord(i) <= 122) or (ord(i) >= 65 and ord(i) <= 90): sum_letter += 1 #判断当前的字符的ASCII码值是否介于数字之间,也就是大于等于48而小于等于57 elif ord(i) >= 48 and ord(i) <= 57: sum_digit += 1 #如果当前字符串不在数字和字母之间,那就跳出此次循环,使用continue语句。 else: continue print("英文字母个数:%d个" % (sum_letter)) print( "数字个数:%d个" % (sum_digit)) return sum_digit, sum_letter str1 = 'akjfhuo23hr4jkn345jkb' count_func(str1)
结果:
英文字母个数:15个 数字个数:6个#--------------------------------------------------------------------------------
算法描述:使用python判断一个输入的列表是否为等差数列(默认输入的列表长度大于等于三,不要抬杠哦,尤其是不要和自己抬杠,两个元素的列表好像就是等差的吧。。我也不太明白)思路:首先,要知道列表的切片方法,还要知道列表取值是从下表为零的元素开始的。所以,在遍历时的限制是(0,len(str)-1)
代码如下:def is_arithmetic_progression(listl): #获取列表的长度 list_len = len(listl) #开始遍历列表,进行操作,但由于从零开始,所以当限定range的第二个元素时, #由于等差数列的定义,第三个减去第二个,第二个减去第一个,一次就操作三个元素,所以i的最大值为【(len(list)-1)-3】 for i in range(0, list_len - 3): #只要有一次不满足就返回False,跳出循环(return之后的语句不再执行) if listl[i+1] - listl[i] != listl[i+2] - listl[i+1]: return False return True m = [1,2,3,4,1,5] print(is_arithmetic_progression(m))[/code]
结果:False#----------------------------------------------------------------------------
算法描述:计算字符串中所有数字的项的和(此处字符串中连续出现的数字视为一个数字,若是看做不同数字,可以用split()方法)
思路:使用正则表达式,找出所有数字(正则是贪婪的,连在一起的数字被视为一个数字被取出,若想要将每个数字字符都视为单独的数字,可以取消贪婪, 使用 .*?或者.+?)
代码如下:
import re def digit_sum_str(strl): #定义要查找的正则表达式,使用findall(),将找到的元素以列表的形式返回,但是要注意,返回的元素都是字符串。 listl = re.findall(r"\d+\.?\d*",strl) #初始化sum变量, sum = 0 # print(listl) #开始遍历list1 for i in range(0,len(listl)-1): #每次都将list1[i]的值强转为int,并且加进sum sum += int(listl[i]) return sum str_1 = 'iaoej5io2n3rj43i5j' print(digit_sum_str(str_1))
结果:53#----------------------------------------------------------------------------
算法描述:对一个只含有小写字母和空格的字符串进行加密,a变为d,b变为f.....,空格不变。输出此字符串
思路:既然是加密,而且还是规律如此明显,一定要使用ASCII码值进行运算,这应该是毫无疑问的,我用的是比较笨的方法,先判断是不是想x,y,z,空格这四个,如果是的话,直接进行赋值,如果不是,就进行ASCII码值加1,再转为字符串(中间出了些小问题,就是对字符串的操作不太成功,所以把字符串转化为了列表,操作结束再转化为字符串,)
代码如下:def _encraption(strl): #因为对字符串的操作不成功,在这里将字符串转化为列表进行操作 strl = list(strl) #对列表进行遍历操作 for i in range(0,len(strl)-1): #下面的if和elif是对x,y,z,空格进行特殊赋值的操作 if strl[i] == 'x': strl[i]='a' elif strl[i] == 'y': strl[i] == 'b' elif strl[i] == 'z': strl[i] == 'c' elif strl[i] == ' ': continue #如果不是上面的四种情况,那么进行ASCII码值的加3,并且再转化回来 else: strl[i] = chr((ord(strl[i]))+3) #此处将列表再拼接为字符串 strl = ''.join(strl) return strl x = 'uashdnjn nlaksd' print(_encraption(x))
结果:xdvkgqmq qodnvd
本题也可以采取取模的方法,不过也要判断空格,留待以后#------------------------------------------------------------------------------- 阅读更多
- 基于Levenberg-Marquardt训练算法的BP网络Python实现
- 基于用户协同过滤的推荐系统算法,python 实现
- 基于Levenberg-Marquardt训练算法的BP网络Python实现
- 基于Python的朴素贝叶斯算法实现
- 【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库
- Keras:基于python库之Keras建立模型算法来实现【预测】功能的详细攻略(经典,建议收藏)
- 基于python快速实现排列组合算法
- 基于Lagrange-Newton法的SQP局部算法python实现
- Python实现一些简单的算法(1)—寻找完全数
- 基于Levenberg-Marquardt训练算法的BP网络Python实现
- 利用Python实现基于PCA算法的人脸识别
- 【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库
- 笔记︱基于网络节点的node2vec、论文、算法python实现
- k近邻(kNN)算法的Python实现(基于欧氏距离)
- python实现基于向量算法的的路由协议(RIP)
- 基于python实现的mmseg中文分词算法实现及其优化
- 词性标注的python实现-基于平均感知机算法
- Python实现一些简单的算法(2)—计算余数与random模块的使用
- 基于图的推荐算法及python实现
- 基于python的分词算法的实现(1) - 算法