zoukankan      html  css  js  c++  java
  • Python实验一

    (四)、排列组合序列

    【题目描述】
    用户输入整数n(1<=n<=26)和整数m(m<=n),然后输入n个不同的字母,请编写程序输出在这n个字母中选择m个字母的所有排列序列和组合序列。
    【源代码程序】

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    #@Time    :2019/4/23 0023 下午 2:12
    #@Author  :喜欢二福的沧月君(necydcy@gmail.com)
    #@FileName: Per_And_Com.py
    #@Software: PyCharm
    import iterto
    (四)、排列组合序列
    【题目描述】
    用户输入整数n(1<=n<=26)和整数m(m<=n),然后输入n个不同的字母,请编写程序输出在这n个字母中选择m个字母的所有排列序列和组合序列。
    """
    e=input()
    num=int(input())
    arr = input().split(" ")
    print(arr)
    a = list(itertools.combinations(arr,num))
    b = list(itertools.permutations(arr,num))
    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()
    

    (五)、蒙特·卡罗法计算圆周率

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

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    #@Time    :2019/4/30 0030 下午 2:43
    #@Author  :喜欢二福的沧月君(necydcy@gmail.com)
    #@FileName: Monte_Carlo.py
    
    #@Software: PyCharm
    """
    (五)、蒙特·卡罗法计算圆周率
    【题目描述】
    蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题。假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x,y)必然在木板上(更多的时候是落在单位圆内),如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以4,这个数字会无限逼近圆周率的值。这就是蒙特·卡罗发明的用于计算圆周率近似值的方法。编写程序,模拟蒙特·卡罗计算圆周率近似值的方法,输入掷飞镖次数,然后输出圆周率近似值。
    """
    import 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)
    

    【运行测试】

    (六)、验证6174猜想

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

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    #@Time    :2019/4/30 0030 下午 2:08
    #@Author  :喜欢二福的沧月君(necydcy@gmail.com)
    #@FileName: 6174.py
    
    #@Software: PyCharm
    """
    (六)、验证6174猜想
    【题目描述】
    1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,
    使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,
    并且这个操作最多不会超过7次。请编写程序验证这个猜想。
    """
    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=" ")
    

    【运行测试】

    (七)、模拟页面调度LRU算法

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

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    #@Time    :2019/4/30 0030 下午 3:37
    #@Author  :喜欢二福的沧月君(necydcy@gmail.com)
    #@FileName: LRU.py
    
    #@Software: PyCharm
    """
    所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。
    问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。
    
    """
    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))
    

    【运行测试】

    (八)、爬楼梯

    【题目描述】
    假设一段楼梯共n(n>1)个台阶,小朋友一步最多能上3个台阶,那么小朋友上这段楼梯一共有多少种方法。
    【源代码程序】

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    #@Time    :2019/4/24 0024 下午 10:06
    #@Author  :喜欢二福的沧月君(necydcy@gmail.com)
    #@FileName: Climbing_ladder.py
    
    #@Software: PyCharm
    
    """
    (八)、爬楼梯
    【题目描述】
     假设一段楼梯共n(n>1)个台阶,小朋友一步最多能上3个台阶,那么小朋友上这段楼梯一共有多少种方法。
    """
    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())))
    

    【运行测试】

    (九)、杨辉三角形

    【题目描述】
    输出n(0<n)行杨辉三角形,n由用户输入。
    【源代码程序】

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    #@Time    :2019/4/24 0024 下午 9:36
    #@Author  :喜欢二福的沧月君(necydcy@gmail.com)
    #@FileName: YanghuiTriangle.py
    
    #@Software: PyCharm
    
    """
    (九)、杨辉三角形
    【题目描述】
    输出n(0<n)行杨辉三角形,n由用户输入。
    
    """
    def YangHui (num = 10):
        LL = [[1]]
        for i in range(1,num):
            LL.append([(0 if j== 0 else LL[i-1][j-1])+ (0 if j ==len(LL[i-1]) else LL[i-1][j]) for j in range(i+1)])
        return LL
    a=int(input())
    for i in YangHui(a):
        for j in i:
            print("%5d"%j,end="")
        print()
    

    【运行测试】

    (十)、筛法求素数

    【题目描述】
    用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数。
    【源代码程序】

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    # @Time    :2019/4/23 0023 下午 10:03
    # @Author  :喜欢二福的沧月君(necydcy@gmail.com)
    # @FileName: PremeNumble.py
    
    # @Software: PyCharm
    import numpy
    """
    (十)、筛法求素数
    【题目描述】
    用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数。
    """
    import math
    num = [int(n) for n in input('').split()]
    MAX_INT=num[1]
    MIN_INT=num[0]
    marks_bool = [True] * (MAX_INT + 1)
    for i in range(2,int(math.sqrt(MAX_INT)) + 1):
        j = i
        k = j
        while j * k <= MAX_INT:
            marks_bool[j * k] = False
            k += 1
    sum_int = 0
    l=[]
    for i in range(2,MAX_INT + 1):
        if marks_bool[i] is True:
            if(i>=MIN_INT):
                l.append(i)
    print(numpy.array(l).reshape(-1,5))
    

    【运行测试】

    (十一)、查找鞍点

    【题目描述】
    对于给定5X5的整数矩阵,设计算法查找出所有的鞍点的信息(包括鞍点的值和行、列坐标,坐标从1开始)。
    提示:鞍点的特点:列上最小,行上最大。
    【源代码程序】

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    #@Time    :2019/4/23 0023 下午 3:29
    #@Author  :喜欢二福的沧月君(necydcy@gmail.com)
    #@FileName: Saddle_Point.py
    
    #@Software: PyCharm11 3 5 6 9 12 4 7 8 10 10 5 6 9 11 8 6 4 7 8 15 10 11 20 25
    #
    import numpy as np
    num = [int(n) for n in input('').split()]
    num = np.array(num,dtype=int)
    num = num.reshape(5,5)
    for i in range(0,5):
      for j in range(0,5):
         if (num[i][j] == min(num[:,j]) & num[i][j] == max(num[i,:])):
            print("[%s,%s,%s]"%(i+1,j+1,num[i][j]))
    

    【运行测试】

    (十二)、正整数的因子展开式

    【题目描述】
    编写程序,输出一个给定正整数x(x>1)的质因子展开式。
    【源代码程序】

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    #@Time    :2019/4/23 0023 下午 9:38
    #@Author  :喜欢二福的沧月君(necydcy@gmail.com)
    #@FileName: Proton.py
    
    #@Software: PyCharm
    a=int(input())
    b=str(a)
    num=[]
    i=1
    while i <= a:
        if a%i == 0:
            a = a/i
            num.append(i)
            print(num)
            i = 1
        i+=1
    b+='='+str(num[1])
    for j in num[2:]:
        b+="*"+str(j)
    print(b)
    

    【运行测试】

    (十三)、牛顿迭代法(写到实验报告中)

    【题目描述】
    编写程序,使用牛顿迭代法求方程 在x附近的一个实根。
    【源代码程序】

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    #@Time    :2019/4/23 0023 下午 2:12
    #@Author  :喜欢二福的沧月君(necydcy@gmail.com)
    #@FileName: Per_And_Com.py
    
    #@Software: PyCharm
    from math import fabs
    
    def solut(a,b,c,d,e):
        x1=e
        # 迭代:
        while True:
            x=x1
            f = ((a * x + b) * x + c) * x + d #原函数
            f1 = (3 * a * x + 2 * b) * x + c #求导的函数
            x1 = x - f / f1
            if (fabs(x1 - x) <= 0.00000001):
                return x1
    num = [float(n) for n in input('').split()]
    print(("%0.2f")%(solut(num[0],num[1],num[2],num[3],num[4])))
    

    【运行测试】

  • 相关阅读:
    在C#中实现Python的分片技术
    如何将松散的dll打包进需要发布的exe
    Python基础学习(第8天)
    javascript中 的 + RegExp['x241'] 怎么理解
    CSS和JavaScript标签style属性对照表
    浏览器 怪异模式(Quirks Mode) 与 标准模式(Standards Mode)
    Javascript如何判断一个变量是数字类型?
    我的第一个jquery插件:下拉多选框
    javascript中===与==
    ztree高级实例(原创)
  • 原文地址:https://www.cnblogs.com/miria-486/p/11075405.html
Copyright © 2011-2022 走看看