文章内容
- 1.python打印99乘法表
- 2.python打印水仙花数
- 3. 选择排序、冒泡排序、插入排序
- 4.二分查找、迭代式二分查找
- 链接:Python内置函数大全
python打印99乘法表
#这是一个99乘法表
i=1
j=1
for i in range(1,10):
for j in range(1,i+1):
print('%d*%d=%-2d\t'%(j,i,i*j),end='');
print('')
python打印水仙花数
#找到1-10000的之间的水仙花数
#构造一个函数,将一个数拆分为单个的数
#分别求立方,相加后判断是否与原数相等
def f(x):
return x*x*x;
def zf(x):
L = [];
while x > 0 :
n=x%10;
x=x//10;
L.append(n);
return L;
def plus(s):
sum = 0;
x = len(s);
for i in range(x):
sum=sum+s[i];
return sum;
for i in range(10,10001):
l = zf(i)
s = map(f,l);
n = plus(list(s));
if i == n:
print(i);
3.1 选择排序
#python选择排序
#每次遍历把最小值排到数组最前端,当遍历完成时数组也就拍好了序
l = [9,6,7,3,2,1]
for i in range(0,len(l)):
min = i
for j in range(i+1,len(l)):
if l[j] < l[min]:
tmp = l[min]
l[min] = l[j]
l[j] = tmp
for i in range(0,len(l)):
print(l[i],end=" ")
3.2冒泡排序
#python冒泡排序
#每次遍历数组,相邻位置比较大小,左边大于右边,交换位置
l = [9,6,7,3,2,1]
for i in range(0,len(l)):
for j in range(0,len(l)-i-1):
if l[j]>l[j+1]:
tmp=l[j]
l[j]=l[j+1]
l[j+1]=tmp
print(l)
3.3插入排序
#python插入排序
#遍历过程,选择一个数向前比较,直到出现前面的数小于该数或前面没有数,否则交换位置
l = [9,6,7,3,2,1]
for i in range(0,len(l)):
j = i
while j>=1 and l[j]<l[j-1]:
temp = l[j]
l[j] = l[j-1]
l[j-1] = temp
j-=1
print(l)
4.1二分查找
#python二分查找
#先输入m个整数,再输入一个整数n,判断n是否存在
m = input('input a num:')
l = []
m = int(m) #字符串转数字
print('the arrs:')
for i in range(0,m):
t = input();
l.append(t);
l = [int(x) for x in l] #列表生成器
l = sorted(l) #排序
n = input('input a num:')
n = int(n)
lo = 0
hi = len(l)
while lo <= hi:
mid = lo+(hi-lo)//2 #python整除
if l[mid] > n:
hi = mid-1
elif l[mid] < n:
lo = mid+1
else:
print('hava the num')
break
if(lo>hi):
print('no')
4.2 迭代式二分查找
#python迭代式二分查找
import random
m = input('input arrs length:')
m = int(m)
l=[]
for i in range(0,m):
l.append(random.randint(1,100)) #生成随机数
print('the arrs:',end=' ')
print(l)
n = input('input a num:')
n = int(n)
#迭代函数
def f(lo,hi):
mid = lo + (hi-lo)//2 #整除
if lo>hi:
return 'no'
if n>l[mid]:
return f(mid+1,hi)
elif n<l[mid]:
return f(lo,mid-1)
else:
return 'yes'
print(f(0,m-1))