总结了一些最最基本的python算法,供新手一起练习
练习一:求1+2+3...100的值
#第一种方法
a = 0
for i in range(1,101):
a+=i
print(a)
#第二种方法
a = 0
for i in range(1,101):
a+=i
print(a)
#第三种方法
from functools import reduce
def f(x,y):
return x+y
print(reduce(f,range(1,101)))
# 第四种方法
from functools import reduce
print(reduce(lambda x,y:x+y,range(1,101)))
练习二:打印一个数的阶乘
# 方法一
def fac(n):
result = 1
for i in range(1,n+1):
result*=i
if i
print(i,"X",'',end='')
else:
print(i,"=",'',end='')
return result
print(fac(4))
# 方法二
from functools import reduce
print(reduce(lambda x,y:x*y,range(1,5)))
练习三:10-50中个位数带有5的所有数字
# 方法一
for i in range(1,5):
for j in range(1,6):
print(i*10+j,'',end='')
# 方法二
for i in range(10,50):
if str(i)[1] in ['1','2','3','4','5']:#注意str[]的用法
print(i,'',end='')
练习四:求两个数的最大公约数
def gcd(x,y):
# 情况一:较大的数字能整除较小的数字
if x>y:
biger = x
smaller = y
else:
biger =y
smaller = x
if biger%smaller ==0:
gcd =smaller
# 情况二:不能进行整除
else:
for i in range(1,smaller):
if x%i ==0 and y%i ==0:
gcd = i
return gcd
print(gcd(16,12))
# range 范围应该改为(smaller+1)/2
练习5:计算100-300内的质数,并统计个数
a = []
# 用count来计数
count =0
for i in range(100,301):
# 判定不是质数的进行剔除
judge = 1
for j in range(2,i):
if i%j ==0:
judge+=1
if judge==1:
count+=1
a.append(i)
print(a)
print(f"一共有{count}个质数")
练习六:利用冒泡进行排序
#两两对比,像最大的泡冒上来
def bubbleSort(nums):
# 需要冒泡的次数
for i in range(len(nums)-1):
# 每一次排序
for j in range(i,len(nums)-1):
if nums[j]>nums[j+1]:
nums[j+1],nums[j] = nums[j],nums[j+1]
return nums
nums = [1,5,2,6,12]
print(bubbleSort(nums))
练习七:利用选择进行排序
# 选择排序,核心思想:固定位置,选择元素
#第一次循环,在list中选择最小的元素放入index0,以此类推
def selectSort(list):
for i in range(len(list) - 1):
# 第1个,第2个,第3个位置(i)选出最小值min
min = i
# 遍历完成之后,min就指向了最小元素的下标
for j in range(i,len(list)):
if list[j]
# min指向的是最小元素j的下标
min = j
# 把将最小的元素值 和 坐标为i的元素值进行交换
# 最小元素值的坐标赋给temp
# temp表示最小元素的值
temp = list[min]
# 把i位值(第一次循环就是位值1的值给值最小的值所在的位置)即坐标互换
list[min] = list [i]
list [i] = temp
# #或者直接互相赋值(下面这样写)
# list[min],list[i] = list[i],list[min]
return list
a = [2,3,1,22,12,15,222,1,0]
print(selectSort(a))
个人选择和冒泡排序很容易混淆,多多区分...
练习八:利用插入进行排序