Python作业1

Python0002排列组合序列

题目描述

用户输入整数n1<=n<=26)和整数mm<=n),然后输入n个不同的字母,请编写程序输出在这n个字母中选择m个字母的所有排列序列和组合序列。

import itertools
m=input()
n=int(input())
arr = input().split(" ")
print(arr)
a = list(itertools.combinations(arr,n))
b = list(itertools.permutations(arr,n))
print("Permutation:" )
for i in b:
  for j in i:
      print(j,end=" ")
  print()
print("Combination:" )
for i in a:
  for j in i:
      print(j,end=" ")
  print()
View Code

 

Python0003蒙特·卡罗法计算圆周率

题目描述

蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题。假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x,y)必然在木板上(更多的时候是落在单位圆内),如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以4,这个数字会无限逼近圆周率的值。这就是蒙特·卡罗发明的用于计算圆周率近似值的方法。编写程序,模拟蒙特·卡罗计算圆周率近似值的方法,输入掷飞镖次数,然后输出圆周率近似值。

 

import random
a=int(input("请输入次数:"))

flag=0
for i in range(0,a+1):
    x=random.uniform(0,2)-1 #生成0-2之间的随机数,圆心(1,1)
    y=random.uniform(0,2)-1
    if (x*x+y*y)<=1:
        flag+=1
print(flag/a*4)
View Code

 

 

Python0004验证6174猜想

题目描述

1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。请编写程序验证这个猜想。

def Min(a):
    a=str(a)
    arr=[]
    for i in range(0,4):
        arr.append(a[i])
    arr.sort() #升序排列
    return int(''.join(arr))  #将生成的字符串序列转换为int并返回
def Max(a):
    a=str(a)
    arr=[]
    for i in range(0,4):
        arr.append(a[i])
    arr.sort(reverse=True) #降序排列
    return int(''.join(arr))
flag=0
x = input("请输入4位数:")
while (1000<int(x)<10000 and int(x) != 6174):
    x=Max(x)-Min(x)
    flag+=1
    print(x,end=" ")

print("输入有误")
View Code

 

Python0005模拟页面调度LRU算法

题目描述

所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。

问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。

 

 

def LRU(xxs, maxNum,n):

    list = []
    flag = 0

    for xx in list:
        num = len(list)
        if num < n:
            flag += 1
            list.append(xx)
        elif num == n:                #要访问的新页面已在主存块中
            if xx in list:          #处理“主存块”,把最新访问的页面交换到列表尾部
                pos = list.find(xx)
                list = list[:pos] + list[pos+1:] + xx
            else:                     #把最早访问的页面踢掉,调入新页面
                list.pop(0)
                list.append(xx)
                flag += 1

    return flag
n=int(input())
lsit2=tuple(input().split(" "))
print(LRU(lsit2, 3,n))
View Code

 

 

 

 

posted @ 2022-03-16 22:58  大雄的脑袋  阅读(124)  评论(0编辑  收藏  举报