python基础编程

文章内容

  • 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))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值