Python实验案例 您所在的位置:网站首页 集合的表示有几种方法 Python实验案例

Python实验案例

2023-12-26 17:34| 来源: 网络整理| 查看: 265

 Python 运算符、内置函数

实验目的:  1、熟练运用 Python 运算符。  2、熟练运用 Python 内置函数。实验内容:  1、编写程序,输入任意大的自然数,输出各位数字之和。  2、编写程序,输入两个集合 setA 和 setB,分别输出它们的交集、并集和差集 setA-setB。  3、编写程序,输入一个自然数,输出它的二进制、八进制、十六进制表示形式。

num = input("请输入一个自然数:") print(sum(map(int, num))) # sum() 表示求和 # map(int,num) 表示将num的各位转换成整数

setA = eval(input("请输入一个集合:")) setB = eval(input("请输入一个集合:")) print("交集:", setA | setB) print("并集:", setA & setB) print("setA-setB:", setA - setB)

num = int(input("请输入一个自然数:")) print("二进制:",bin(num)) print("十进制:",oct(num)) print("十六进制:",hex(num))

 

使用蒙特 · 卡罗方法计算圆周率近似值

实验目的:  1、理解蒙特·卡罗方法原理。  2、理解 for 循环本质与工作原理。  3、了解 random 模块中常用函数。实验内容:  蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计算问题。假设有一块边长为 2 的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x, y)必然在木板上(更多的时候是落在单位圆内),如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以 4,这个数字会无限逼近圆周率的值。这就是蒙特·卡罗发明的用于计算圆周率近似值的方法,如图所示。

     

  编写程序,模拟蒙特·卡罗计算圆周率近似值的方法,输入掷飞镖次数,然后输出圆周率近似值。

# author : "王佳伟" # date : 2019-06-26 # File : 3.py # IDE:PyCharm from random import random times = int(input("请输入您投掷飞镖的次数:")) hit = 0 for i in range(times): x = random() y = random() if x*x+y*yvalue: print("Too big") else: print("Too litter") else: # else 与 for连用,表示for循环结束后运行else # 次数用完还没有猜对,游戏结束,给出提示。 print("Game over , FAIL.") print("The number is ", value) guessNumber()

 

 

抓狐狸游戏

实验目的:  1、培养分析问题并对进行建模的能力。  2、熟练使用列表解决实际问题。  3、熟练运用选择结构和循环结构解决实际问题。  4、理解带 else 子句的循环结构执行流程。  5、理解使用异常处理结构约束用户输入的用法。实验内容:  编写程序,模拟抓狐狸小游戏。假设一共有一排 5 个洞口,小狐狸最开始的时候在其中一个洞口,然后玩家随机打开一个洞口,如果里面有狐狸就抓到了。如果洞口里没有狐狸就第二天再来抓,但是第二天狐狸会在玩家来抓之前跳到隔壁洞口里。

# author : "王佳伟" # date : 2019-06-26 # File : 11.py # IDE:PyCharm from random import choice, randrange def catchMe(n=5, maxStep=10): ''' 抓狐狸游戏 :param n: 洞口的个数,默认为5 :param maxStep: 最大抓取次数,默认允许抓10次 :return: null ''' # 共有n个洞口,设有狐狸的为1,没有的为0 positions = [0] * n # 狐狸的随机初始位置 oldPos = randrange(0, n) positions[oldPos] = 1 # 抓maxStep次 while maxStep >= 0: maxStep -= 1 # 这个循环是为了保证用户输入是否是有效的洞口 while True: try: x = input("今天打算打开哪个洞口?(0-{0}):".format(n - 1)) # 如果输入的不是数字,会跳转到except部分 x = int(x) # 如果输入的洞口有效,结束这个循环,否则继续输入 assert 0 m: break #对改位置之后的元素进行过滤 lst[index+1:] = filter(lambda x:x%value!=0,lst[index+1:]) print(lst) # enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 # filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

 

汉诺塔问题

实验目的:  1、理解函数默认值参数。  2、理解函数递归。  3、熟练运行列表对象的方法。实验内容:  据说古代有一个梵塔,塔内有三个底座 A、B、C,A 座上有 64 个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这 64 个盘子从 A 座移到 C 座,但每次只能允许移动一个盘子。在移动盘子的过程中可以利用 B 座,但任何时刻 3 个座上的盘子都必须始终保持大盘在下、小盘在上的顺序。如果只有一个盘子,则不需要利用 B 座,直接将盘子从 A 移动到 C 即可。编写函数,接收一个表示盘子数量的参数和分别表示源、目标、临时底座的参数,然后输出详细移动步骤和每次移动后三个底座上的盘子分布情况。

# author : "王佳伟" # date : 2019-06-28 # File : 12.py # IDE:PyCharm def haonoi(num, src, dst, temp=None): # 递归算法 if num < 1: return global times # 声明用来记录移动次数的变量为全局变量 # 递归调用函数自身,先把除最后一个盘子以外的所有盘子移动到临时柱子上 haonoi(num - 1, src, temp, dst) # 移动最有一个盘子 print("the {0} times move:{1} - -> {2}".format(times, src, dst)) towers[dst].append(towers[src].pop()) for tower in "ABC": # 输出三根柱子上的盘子 print(tower, ":", towers[tower]) times += 1 # 把除最后一个盘子之外的其他盘子从临时柱子上移动到目标柱子上 haonoi(num - 1, temp, dst, src) times = 1 # 用来记录移动次数 n = 3 # 盘子数量 towers = {'A': list(range(n, 0, -1)), # 初始状态,所有盘子都在A柱上 'B': [], 'C': [] } # A表示最初防止盘子的柱子,C表示目标柱子,B是临时柱子 haonoi(n, 'A', 'C', 'B')

  

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有