考前基本方法的练习

# 斐波拉契数列
def fib(n):
    a,b=1,1
    while a<n:
        print(a,end=' ')
        a,b=b,a+b
fib(100)
print()

# 因数分解
from random import randint
def factors(num):
    for i in range(2,int(num**0.5)+1):
        if num%i==0:
            facs.append(i)
            factors(num//i)
            break
    else:
        facs.append(num)
facs=[]
n=randint(2,10**8)
factors(n)
result='*'.join(map(str,facs))
if n==eval(result):
    print(n,'='+result)

#
#def do(a,b=1,c)

#生成斐波那契数列
def fib():
    a,b=1,1
    while True:
        yield a
        a,b=b,a+b
a=fib()
for i in range(10):
    print(next(a))

#打印杨辉三角
def yanghui(t):
    print('[1]'.center(40))
    line=[1,1]
    print(str(line).center(40))
    for i in range(2,t):
        r=[]
        for j in range(0,len(line)-1):
            r.append(line[j]+line[j+1])
        line=[1]+r+[1]
        print(str(line).center(t*4))
yanghui(10)

# 将一个正偶数分解成两个素数
def IsPrime(p):
    if p==2:
        return True
    if p%2==0:
        return False
    for i in range(3,int(p**0.5)+1,2):
        if p%i==0:
            return False
    return True
t=10
if isinstance(t,int) and t>0 and t%2==0:
    for i in range(2,t//2+1):
        if IsPrime(i) and IsPrime(t-i):
            print(i,'+',t-i,'=',t)
        else:
            print('无')
else:
    print("该数不是正偶数")

# 求黑洞数:数字每位上的数字组成的最大数减去最小数等于
# 这个数
def heidong(n):
    start=10**(n-1)
    end=10**n
    for i in range(start,end):
        big=''.join(sorted(str(i),reverse=True))
        little=''.join(sorted(big))
        big,little=map(int,(big,little))
        if big-little==i:
            print(i)
n=3
heidong(n)

# 冒泡排序:
def bubble_sort(array):
    for i in range(1,len(array)):
        for j in range(0,len(array)-i):
            if array[j]>array[j+1]:
                array[j],array[j+1]=array[j+1],array[j]
    return array
array=[1,2,3,48,9,5,3,56,78]
print(bubble_sort(array))

#选择排序
def xuanze(array):
    newarr=[]
    for i in range(len(array)):
        minIndex=array.index(min(array))
        newarr.append(array.pop(minIndex))
    return newarr

array=[1,2,3,41,2,3,4,2,3,4,2,4,89,78]
print(xuanze(array))

# 二分法查找
# 普通查找
def binary_search_normal(arr,data):
    arr.sort()
    start,end=0,len(arr)-1
    while start<=end:
        mid_index=(start+end)//2
        if array[mid_index]==data:
            return True
        if data>array[mid_index]:
            start=mid_index+1
        else:
            end=mid_index-1
    return False
array=[1,2,3,4,6,74,6,8]
print(binary_search_normal(array,3))

# 递归法查找
def binary_search(arr,data):
    if len(arr)==0:
        return False
    arr.sort()
    mid_index=len(arr)//2
    if arr[mid_index]==data:
    	return binary_search(arr[mid_index+1:],data) \
        	if data>arr[mid_index] \
        	else binary_search(arr[:mid_index],data)binary_search(arr[:mid_index],data)
array=[1,2,4,5,62,4,6,8,96,86,6]
print(binary_search(array,86))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值