冒泡, 插排
lst = [22 , 2 , 55 , 6 , 4 , 1]
for s in range(len(lst)): # 限制下面的循环次数
i = 0 # lst的索引是从0开始的,所以限定i 的初始值为0
while i < len(lst) - 1: # lst 的 len(lst)值是从1开始的, 并且 进行比较数字移动到i相应位置 的时候不需要再进项下面的比较, 所以在len(lst)的基础上减去1.
if lst[i] > lst[i + 1]: # 进行比较 并解包 调换位置.
lst[i] , lst[i + 1] = lst[i + 1] , lst[i]
i = i + 1 # 进行累加,是循环持续进行.
print(lst)# 打印最后结果
斐波那契数列:
# 1、斐波那契数列:1, 2, 3, 5, 8, 13, 21.....根据这样的规律,编程求出400万以内最大的斐波那契数,并求出他是第几个斐波那契数。
# n1 = 3
# n2 = 5
# num = n1 + n2
# n1 = n2
# n2 = n1 + n2
#1、我首先要有前两个数
方法一 递归:
def fib(num): if num == 1: return 1 elif num == 2: return 2 return fib(num - 1) + fib(num - 2)
方法二:
def fib2(num): n1 = 1 n2 = 2 if num == 1: return 1 elif num == 2: return 2 else: for i in range(3,num + 1):#range(3,3) n1 , n2 = n2 , n1 + n2 return n2 fib2(33)
水仙花数方法:
for num in range(100, 1000): geWei = num % 10 baiWei = int(num / 100) shiWei = int((num - baiWei * 100) / 10) sum = geWei**3 + shiWei**3 + baiWei**3 if sum == num: print("%d是水仙花数" % num) for n in range(100, 1000): i = int(str(n)[0]) j = int(str(n)[1]) k = int(str(n)[2]) if n == i**3 + j**3 + k**3: print(n)