python算法

1、冒泡算法
def bublesort(array):
maxindex = len(array)-1
k =0
for i in range(maxindex,0,-1):
for j in range(0,i):
if array[j]>array[j+1]:
array[j], array[j+1] = array[j+1], array[j]
print(k)
return array

2、斐波那契数列
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10)
while True:
try:
print(next(f), end=" ")
except StopIteration:
sys.exit()
3、生成随机数
import random
import string

a = “”.join(random.sample(string.ascii_letters,6))
print(a)
b = “”.join(random.sample(string.digits,8))
print(b)
4、阶乘函数
def factorial(n):
if n<2:
return 1
else:
return n* factorial(n-1)
print(factorial(1))
print(factorial(3))
5、快速排序
def quickSort(alist):
quickSortHelper(alist,0,len(alist)-1)

def quickSortHelper(alist,first,last):
if first<last:
splitpoint = partition(alist,first,last)
quickSortHelper(alist,first,splitpoint-1)
quickSortHelper(alist,splitpoint+1,last)
def partition(alist,first,last):
mid = alist[first]
leftmark = first+1
rightmark = last
done = False
while not done:
while leftmark<=rightmark and alist[leftmark]<=mid:
leftmark = leftmark+1
while rightmark>=leftmark and alist[rightmark]>=mid:
rightmark = rightmark-1
if rightmark<leftmark:
done = True
else:
alist[leftmark],alist[rightmark]=alist[rightmark],alist[leftmark]
alist[first],alist[rightmark]=alist[rightmark],alist[first]
return rightmark
快速排序2:
def quickSort1(list):
if len(list)<2:
return list
mid = list[0]
left = [i for i in list[1:] if i<=mid]
right = [i for i in list[1:] if i>mid]
finallyList = quickSort1(left)+[mid]+quickSort1(right)
return finallyList
list = [52, 312, 54, 7, 3, 2]
s = quickSort1(list)
print(s)
6、写一段程序,删除字符串a中包含的字符串b,举例 输入a = “asdw”,b = “sd” 返回 字符串 “aw”,并且测试这个程序。
def delBString(a,b):
if len(a)<len(b):
raise Exception(‘a length mast’)
result = []
flag = False
i=0
la=len(a)
lb=len(b)
while i<la:
j=0
while j<lb:
if i+j <la and a[i+j] == b[j]:
j += 1
else:
j += 1
flag = False
break
flag = True
if flag:
i += lb
else:
result.append(a[i])
i += 1
return “”.join(result)
7、判断输入字符串是否是IP地址
def check_ipv4(str):
ip = str.strip().split(".")
return False if len(ip) != 4 or False in map(lambda x: True if x.isdigit() and 0 <= int(x) <= 255 else False,ip) else True
print(check_ipv4(‘192.111.1.7’))

8、判断字符串"abacdbdde"中第一个不重复的字符

def first_char(str):
dict1 = {}
for i in range(len(str)):
#累计字符的出现次数
if str[i] in dict1:
dict1[str[i]] += 1
#只出现一次,key对应的value就记1次
else:
dict1[str[i]] = 1
for i in range(len(str)):
if dict1[str[i]] == 1:
return str[i], i+1
print(dict1)
if name == ‘main’:
str1 = input(‘please input string:’)
print(first_char(str1))

9、判断字符串"{{({()[({})])}}"是否括号全部闭合
def is_str_close(a):
‘’’
判断括号是否闭合
作者:上海-悠悠 QQ交流群:779429633
‘’’
b = []
flag = True
for i in a:
if i == “{” or i == “[” or i == “(”:
# 左边的括号加进去
b.append(i)
elif i == “}”:
# 遇到右边括号}弹出最后面的一个{
if len(b) == 0 or b.pop() != “{”:
return False
elif i == “]”:
# 遇到右边括号]弹出最后面的一个[
if len(b) == 0 or b.pop() != “[”:
return False
elif i == “)”:
# 遇到右边括号)弹出最后面的一个(
if len(b) == 0 or b.pop() != “(”:
return False
# 判断最后列表b里面的左边括号是否全部被弹出
if len(b) != 0:
flag = False
return flag

if name == ‘main’:
a = “{{()}}”
print(is_str_close(a))
b = “({{()}}”
print(is_str_close(b))
c = “{{()}}]”
print(is_str_close©)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值