码迷,mamicode.com
首页 > 其他好文 > 详细

2020春季学期第八周学习总结

时间:2020-04-11 20:22:44      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:三角形   str   处理   牛顿迭代   交换   pre   结果   else   def   

      本周学习了python编程的一些常见算法编程实现,总结如下:

1、蒙特·卡罗法计算圆周率

 1 import random
 2 print("掷飞镖次数:")
 3 number = int(input())
 4 k = 0
 5 for i in range(1, number + 1):
 6     x = random.uniform(-1, 1)  # x随机取到-1到1的随机数
 7     y = random.uniform(-1, 1)  # Y随机取到-1到1的随机数
 8     if (x * x + y * y <= 1):
 9         k += 1
10 print("输出值为:")
11 print(k / number * 4)

运行结果:

技术图片

2、模拟页面调度LRU算法

 

 1 def LRU(Pages, Num, n):
 2     temp = []
 3     t= 0
 4     for p in lst:
 5         num = len(temp)
 6         if num < n:
 7             t += 1
 8             temp.append(p)
 9         elif num == n:  # 要访问的新页面已在主存块中
10             if p in temp:  # 处理“主存块”,把最新访问的页面交换到列表尾部
11                 pos = temp.index(p)
12                 temp = temp[:pos] + temp[pos + 1:] + [p]
13             else:  # 把最早访问的页面踢掉,调入新页面
14                 temp.pop(0)
15                 temp.append(p)
16                 t+= 1
17     return t
18 n = int(input())
19 lst = tuple(input().split(" "))
20 print(LRU(lst, 3, n))

 

运行结果:

技术图片

3、杨辉三角形

 1 def yang(i, j):  # i为行,j为列
 2     if j == 0 or j == i:
 3         return 1
 4     else:
 5         return yang(i - 1, j) + yang(i - 1, j - 1)
 6 
 7 a=int(input())
 8 for i in range(0, a):
 9     print()
10     for n in range(0, a - i):
11         print(" ", end="")  # 控制每一行前面的空格
12     for j in range(0, i + 1):
13         print(yang(i, j), "", end="")

运行结果:

技术图片

4、查找鞍点

 1 list1=[]
 2 list_max=[]
 3 list_min=[]
 4 for i in range(5):
 5     list=input().split()
 6     list_int=[int(x) for x in list]
 7     list1.append(list_int )
 8     k=0
 9     for j in list_int: 
10         if j==max(list_int):
11             break
12         k=k+1
13     list_max.append([i+1,k+1, max(list_int)])
14 #print(list_max)
15 list2=[[list1[j][i] for j in range(5)] for i  in range(5)]
16 i=0
17 for l in list2:
18     i=i+1
19     k = 0
20     for j in l  :
21         if j == min(l):
22             break
23         k = k + 1
24     list_min.append([ k + 1,i, min(l)])
25 #print(list_min)
26 
27 for i in list_max:
28     for j in list_min:
29         if str(i)==str(j):
30             print(i,end=" ")

运行结果:

技术图片

5、牛顿迭代法

 1 def iteration(a, b, c, d, X):
 2     x = X
 3     if a == 0 and c ** 2 - 4 * b * d < 0:
 4         print("无解")
 5     elif a == 0 and b == 0 and c == 0 and d != 0:
 6         print("无解")
 7     elif a == 0 and b == 0 and c == 0 and d == 0:
 8         print("恒等")
 9     else:
10         while abs(a * x * x * x + b * x * x + c * x + d) > 0.000001:
11             x = x - (a * x * x * x + b * x * x + c * x + d) / (3 * a * x * x + 2 * b * x + c)
12         print("x=%.2f" % x,end=" ")
13 a, b, c, d, x = input().split()
14 iteration(float(a), float(b), float(c), float(d), float(x))

运行结果:

技术图片

 

2020春季学期第八周学习总结

标签:三角形   str   处理   牛顿迭代   交换   pre   结果   else   def   

原文地址:https://www.cnblogs.com/lover995/p/12681677.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!