• 2020春Python_Tutorial1Pyhton环境与基础训练(实验一1~5)


    【Python0002】排列组合序列 (10分)

    【题目描述】

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

    【练习要求】

    请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

    【输入格式】

    在第一行中输入整数n和整数m的值,数据之间以空格为间隔。 在第二行中输入n个不同字母,数据之间以空格为间隔

    【输出格式】

    首先输出所有的排列数列,每种情况一行,字母间以空格为间隔; 再者首先输出所有的组合数列,每种情况一行,在同一行中以字母增序顺序显示,字母间以空格为间隔。

    【输入样例】

    3  2
    a s d
    
     

    【输出样例】

    Permutation:
    a d
    d a
    a s
    s a
    d s
    s d
    Combination:
    a d
    a s
    d s
    import itertools
    #信1705-1李嘉兴
    
    num=input().split(" ")
    num1=int(num[1])
    arr = input().split(" ")
    print(arr)
    a = list(itertools.combinations(arr,num1))
    b = list(itertools.permutations(arr,num1))
    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()
    8-2 【Python0003】蒙特·卡罗法计算圆周率 (10分)
     

    【题目描述】

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

    【练习要求】

    请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

    【输入格式】

    在一行中输入掷飞镖的次数。

    【输出格式】

    输出采用蒙特·卡罗法模拟计算出的圆周率的值。

    【输入样例】

    100000
    
     

    【输出样例】

    3.13056
    import random
    #信1705-1李嘉兴
    #使用扩展库 random
    
    num=int(input())
    ok=0
    for i in range(1,num+1):
        x=random.uniform(-1,1)#到-1到1的随机数
        y=random.uniform(-1,1)
        if(x*x+y*y<=1):
            ok+=1
    print(ok/num*4)
    8-3 【Python0004】验证6174猜想 (10分)
     

    【题目描述】

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

    【练习要求】

    请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

    【输入格式】

    在一行中输入一个任意各位数字不相同的4位数。

    【输出格式】

    验证6174猜想,输出过程中计算得到的各数,数据间以空格为间隔。

    【输入样例】

    2694
    
     

    【输出样例】

    2694 7173 6354 3087 8352 6174

    def Min_Number(a):
        a=str(a)
        arr=[]
        for i in range(0,4):
         arr.append(a[i])
        arr.sort()
        return int(''.join(arr))
    def Max_Number(a):
        a=str(a)
        arr = []
        for i in range(0, 4):
            arr.append(a[i])
        arr.sort(reverse=True)
        return int(''.join(arr))
    a=input()
    while (int(a)!=6174):
        a=Max_Number(a)-Min_Number(a)
        print(a,end=" ")
    8-4 【Python0005】模拟页面调度LRU算法 (10分)
     

    【题目描述】

    所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。 问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。(10分)

    【练习要求】

    请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

    【输入格式】

    在第一行中输入进程获得使用权的主存块数量n。 在第二行中输入进程访问页面的次序,各数据之间以空格为间隔。

    【输出格式】

    输出对于给定的n和进程访问页面的次序,输出采用LRU算法时的缺页次数。

    【输入样例】

    3
    1 2 3 4 1 2 5 1 2 3 4 5
    
     

    【输出样例】

    7

    def LRU(pages, maxNum,n):
    
        temp = []
        times = 0
    
        for page in lst:
            num = len(temp)
            if num < n:
                times += 1
                temp.append(page)
            elif num == n:                #要访问的新页面已在主存块中
                if page in temp:          #处理“主存块”,把最新访问的页面交换到列表尾部
                    pos = temp.index(page)
                    temp = temp[:pos] + temp[pos+1:] + [page]
                else:                     #把最早访问的页面踢掉,调入新页面
                    temp.pop(0)
                    temp.append(page)
                    times += 1
    
        return times
    n=int(input())
    lst=tuple(input().split(" "))
    print(LRU(lst, 3,n))
    8-5 【Python0006】爬楼梯 (10分)
     

    【题目描述】

    假设一段楼梯共n(n>1)个台阶,小朋友一步最多能上3个台阶,那么小朋友上这段楼梯一共有多少种方法。(10分)

    【练习要求】

    请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。

    【输入格式】

    在一行中输入楼梯台阶的数目n。

    【输出格式】

    输出小朋友上这段楼梯的方法数。

    【输入样例】

    15
    
     

    【输出样例】

    5768

    def climb(num):
        if num==1:
            return 1
        if num==2:
           return 2
        if num==3:
            return 4
        else:
            sum=climb(num-1)+climb(num-2)+climb(num-3)
        return sum
    print(climb(int(input())))

    参考地址:https://www.cnblogs.com/miria-486/p/11075405.html

  • 相关阅读:
    《大型网站技术架构》读后感
    质量属性
    课堂作业02
    课堂作业01
    《软件构架实践》读后感06
    《软件构架实践》读后感05
    Storm系列三: Storm消息可靠性保障
    Storm系列二: Storm拓扑设计
    Storm系列一: Storm初步
    网络层协议
  • 原文地址:https://www.cnblogs.com/sonofdemon/p/12671549.html
Copyright © 2020-2023  润新知