2024年4月15号

)、练习安装Python解释器

实验截图

 

点击Customiz installation继续,修改完路径一路继续即可。

 

 

如图已经安装完python解释器

 

打开cmd,输入python 输入print(“hello word”),如图可以显示。

 

(二)、练习搭建Python+Eclipse+pydev编程环境

实验截图

我选择使用Vscode

 

)、练习安装Python扩展库

实验截图

  1. 打开cmd,输入pip install 对应的扩展库名称,就会自动下载,如图

 

下图为下载完成。

 

 

 

)、【Python0002排列组合序列

题目描述

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

【源代码程序】

import itertools

 

n, m = map(int, input().split())    # 这样可以实现一行里面输入两个数字

s = input().split(' ')  # 将输入的字符串拆开

s.sort()

 

print('Permutation')

# 可以知道i是一个元组类型的数据

for i in itertools.combinations(s, 2):

    print(' '.join(i))

    print(i[1], end=' ')

    print(i[0])

print('Combination')

for i in itertools.combinations(s, 2):

    print(' '.join(i))

 

运行测试

 

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

题目描述

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

【源代码程序】

import random

 

n = int(input())

num = 0

for i in range(n):

    x = random.random()

    y = random.random()

    if pow(x * x + y * y, 0.5) < 1:

        num += 1

 

print(num*4/n)

 

运行测试

 

)、【Python0004验证6174猜想

题目描述

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

【源代码程序】

n = input()

print(n, end=' ')

n = list(n)

mmax, mmin = 0, 0

while (mmax - mmin) != 6174:

    mmin = int(''.join(sorted(n)))

    mmax = int(''.join(sorted(n, reverse=True)))

    print(mmax - mmin, end=' ')

    n = list(str(mmax - mmin))

运行测试

 

)、【Python0005模拟页面调度LRU算法

题目描述

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

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

【源代码程序】

 

my_list = []

n = int(input())

count = 0

process = input().split(' ')

my_list.append(process[0])

my_list.append(process[1])

my_list.append(process[2])  

for i in range(3, len(process)):

    if my_list[0] != process[i]:

        count += 1

    my_list.pop(0)

    my_list.append(process[i])

print(count)

运行测试

 

)、【Python0006爬楼梯

题目描述

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

【源代码程序】

def f(n):

    my_dict = {1:1, 2:2, 3:4}

    if 3 >= n >= 1:

        return my_dict[n]

    else:

        return f(n - 1) + f(n - 2) + f(n - 3)

 

 

num = int(input())

print(f(num))

 运行测试

 

)、【Python0007杨辉三角形

题目描述

输出n0<n)行杨辉三角形,n由用户输入。

【源代码程序】

n = int(input())

for i in range(0, n):

    print("%5.d" % 1, end='')

    for j in range(0, i):

        print("%5.d" % (i + 1), end='')

    print("%5.d" % 1, end='')

    print()

运行测试

 

)、【Python0008筛法求素数

题目描述

用户输入整数nm1<n<m<1000),应用筛法求[n,m]范围内的所有素数。

【源代码程序】

def IsS(num):

    for i in range(2, int(pow(num, 0.5)) + 1):

        if num % i == 0:

            return False

    return True

 

 

n, m = map(int, input().split())

num = 0 

for i in range(n, m + 1):

    if IsS(i):

        num += 1

        if num % 5 != 0:

            print("%5.d" % i, end='')

        else:

            print("%5.d" % i)

运行测试

十一)、【Python0009查找鞍点

题目描述

对于给定5X5的整数矩阵,设计算法查找出所有的鞍点的信息(包括鞍点的值和行、列坐标,坐标从1开始)

提示:鞍点的特点:列上最小,行上最大。

【源代码程序】

 

row = []    

low = []    

for i in range(0, 5):

    a = list(map(int, input().split(' ')))

    row.append(a)

for i in range(0, 5):

    b = []

    for j in range(0, 5):

        b.append(row[j][i])

    low.append(b)  

for i in range(0, 5):

    for j in range(0, 5):

        if row[i][j] == max(row[i]):    

            if row[i][j] == min(low[j]):

                print("[%d,%d,%d]" % (i+1, j+1, row[i][j]), end='')

运行测试

 

十二)、【Python0010】正整数的因子展开式

题目描述

编写程序,输出一个给定正整数xx>1的质因子展开式。

【源代码程序】

n = int(input())

num = n

my_list = []

i = 2

while i <= n:

    if n % i == 0:

        n = n / i

        my_list.append(i)

    else:

        i += 1

print("%d=%d" % (num, my_list[0]), end='')

for i in range(1, len(my_list)):

    print("%d" % my_list[i], end='')

运行测试

 

十三)、【Python0011牛顿迭代法

题目描述

编写程序,使用牛顿迭代法求方程x附近的一个实根。

【源代码程序】

def f(xx):

    return n[0] * pow(xx, 3) + n[1] * pow(xx, 2) + n[2] * xx + n[3]

 

 

def fd(xx):

    return 3 * n[0] * pow(xx, 2) + 2 * n[1] * pow(xx, 1) + n[2]

 

 

a, b, c, d, x = map(float, input().split(' '))

n = [a, b, c, d]

next = x - f(x) / fd(x)

while f(x) - f(next) > 1e-6:

    x = next

    next = x - f(x) / fd(x)

print("%5.2f" % next)

运行测试

 

实验分析及问题思考

Python0012】针对Python中的列表、元组、字典、集合、字符串,请以条目形式从各方面对比它们之间的异同。

【答案】

定义方式:

列表:使用方括号 [] 定义,元素之间用逗号分隔。

元组:使用圆括号 () 定义,元素之间用逗号分隔。

字典:使用大括号 {} 定义,键值对之间用冒号分隔,键值对之间用逗号分隔。

集合:使用大括号 {} 定义,元素之间用逗号分隔。

字符串:使用单引号、双引号或三引号定义字符串。

可变性:

列表:可变,可以通过索引来修改、添加、删除元素。

元组:不可变,元组一旦创建,其元素不可更改。

字典:可变,可以通过键来修改、添加、删除键值对。

集合:可变,可以通过方法来添加、删除元素。

字符串:不可变,字符串一旦创建,其内容不可更改。

有序性:

列表:有序,可以通过索引访问元素。

元组:有序,可以通过索引访问元素。

字典:无序,键值对之间没有固定顺序。

集合:无序,元素之间没有固定顺序。

字符串:有序,可以通过索引访问字符。

可重复性:

列表:允许重复元素。

元组:允许重复元素。

字典:不允许重复的键,但允许重复的值。

集合:不允许重复元素。

字符串:允许重复字符。

索引方式:

列表、元组、字符串:支持通过索引访问元素,索引从0开始。

字典、集合:不支持通过索引访问元素,需要通过键来访问值。

总结:列表、元组、字典、集合和字符串在定义方式、可变性、有序性、可重复性和索引方式等方面有所不同,根据具体的需求和场景选择合适的数据类型来存储和操作数据。

posted @   贾贾鱼  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示