返回顶部
首页 > 资讯 > 后端开发 > Python >python程序设计的方法
  • 223
分享到

python程序设计的方法

2023-07-02 13:07:55 223人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章和大家了解一下python程序设计的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。Python是一种面向对象oop(Object Oriented Programming)的脚本语言。面向对象是采用基于对象(

本篇文章和大家了解一下python程序设计的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

python程序设计的方法

Python是一种面向对象oop(Object Oriented Programming)的脚本语言。

面向对象是采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。

在面向对象程序设计中,对象包含两个含义,其中一个是数据,另外一个是动作。面向对象的方法把数据和方法组合成一个整体,然后对其进行系统建模。

python编程思想的核心就是理解功能逻辑,如果对解决一个问题的逻辑没有搞清楚,那么你的代码看起来就会非常的紊乱,读起来非常的拗口,所以一旦逻辑清晰,按照模块对功能进行系统编程,那么你的代码设计肯定是漂亮的!!!

1 基本的程序设计模式

任何的程序设计都包含IPO,它们分别代表如下:

  • I:Input 输入,程序的输入

  • P:Process 处理,程序的主要逻辑过程

  • O:Output 输出,程序的输出

因此如果想要通过计算机实现某个功能,那么基本的程序设计模式包含三个部分,如下:

  • 确定IPO:明确需要实现功能的输入和输出,以及主要的实现逻辑过程;

  • 编写程序:将计算求解的逻辑过程通过编程语言进行设计展示;

  • 调试程序:对编写的程序按照逻辑过程进行调试,确保程序按照正确逻辑正确运行。

2 解决复杂问题的有效方法:自顶向下(设计)

2.1 自顶向下-分而治之

如果要实现功能的逻辑比较复杂的时候,就需要对其进行模块化设计,将复杂问题进行分解,转化为多个简单问题,其中简单问题又可以继续分解为更加简单的问题,直到功能逻辑可以通过模块程序设计实现,这也是程序设计的自顶向下特点。总结如下:

  • 将一个总问题表达为若干个小问题组成的形式

  • 使用同样方法进一步分解小问题

  • 直至,小问题可以用计算机简单明了的解决

2.2 举例1:体育竞技分析

2.2.1 程序总体框架

printlnfo()                步骤1:打印程序的介绍性信息                    
getlnputs()              步骤2:获得程序运行参数:proA, proB, n        
simNGames()         步骤3:利用球员A和B的能力值,模拟n局比赛        
printSummary()      步骤4:输出球员A和B获胜比赛的场次及概率

2.2.2 程序设计

# 导入python资源包from random import random # 用户体验模块 def printIntro():    print("这个程序模拟两个选手A和B的某种竞技比赛")    print("程序运行需要A和B的能力值(以0到1之间的小数表示)") # 获得A和B的能力值与场次模块 def getIntputs():    a = eval(input("请输入A的能力值(0-1):"))    b = eval(input("请输入B的能力值(0-1):"))    n = eval(input("模拟比赛的场次:"))    return a, b, n # 模拟n局比赛模块 def simNGames(n, probA, probB):    winsA, winsB = 0, 0    for i in range(n):        scoreA, scoreB = simOneGame(probA, probB)        if scoreA > scoreB:            winsA += 1        else:            winsB += 1    return winsA, winsB # 判断比赛结束条件 def gameOver(a, b):    return a == 15 or b == 15 # 模拟n次单局比赛=模拟n局比赛 def simOneGame(probA, probB):    scoreA, scoreB = 0, 0    serving = "A"    while not gameOver(scoreA, scoreB):        if serving == "A":            if random() < probA:                scoreA += 1            else:                serving = "B"        else:            if random() < probB:                scoreB += 1            else:                serving = "A"    return scoreA, scoreB # 打印结果模块 def printSummary(winsA, winsB):    n = winsA + winsB    print("竞技分析开始,共模拟{}场比赛".fORMat(n))    print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA / n))    print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB / n))  def main():    printIntro()        probA, probB, n = getIntputs()                # 获得用户A、B能力值与比赛场次N    winsA, winsB = simNGames(n, probA, probB)     # 获得A与B的场次    printSummary(winsA, winsB)                    # 返回A与B的结果  main()

2.2.3 测试结果

python程序设计的方法

2.3 举例2:的斐波那契数列

自顶向下的方式其实就是使用递归来求解子问题,最终解只需要调用递归式,子问题逐步往下层递归的求解。

程序设计:

cache = {}def fib(number):    if number in cache:        return cache[number]    if number == 0 or number == 1:        return 1    else:        cache[number] = fib(number - 1) + fib(number - 2)    return cache[number]if __name__ == '__main__':    print(fib(35))

运行结果:

14930352>>>

理解自顶向下的设计思维:分而治之

3 逐步组建复杂系统的有效测试方法:自底向上(执行)

3.1 自底向上-模块化集成

自底向上(执行)就是一种逐步组建复杂系统的有效测试方法。首先将需要解决的问题分为各个三元进行测试,接着按照自顶向下相反的路径进行操作,然后对各个单元进行逐步组装,直至系统各部分以组装的思路都经过测试和验证。

理解自底向上的执行思维:模块化集成

自底向上分析思想:

  • 任何时候栈中符号串和剩余符号串组成一个句型,当句柄出现在栈顶符号串中时,就用该句柄进行归约,这样一直归约到输入串只剩结束符、栈中符号只剩下开始符号,此时认为输入符号串是文法的句子,否则报错。

自底向上是⼀种求解动态规划问题的方法,它不使用递归式,而是直接使用循环来计算所有可能的结果,往上层逐渐累加子问题的解。在求解子问题的最优解的同时,也相当于是在求解整个问题的最优解。其中最难的部分是找到求解最终问题的递归关系式,或者说状态转移方程。

3.2 举例:0-1背包问题

3.2.1 问题描述

你现在想买⼀大堆算法书,有一个容量为 V 的背包,这个商店⼀共有 n 个商品。问题在于,你最多只能拿 W kg 的东西,其中 wi vi 分别表示第 i 个商品的重量和价值。最终的目标就是在能拿的下的情况下,获得最大价值,求解哪些物品可以放进背包。

对于每⼀个商品你有两个选择:拿或者不拿。

3.2.2 自底向上分析

⾸先要做的就是要找到“子问题”是什么。通过分析发现:每次背包新装进⼀个物品就可以把剩余的承重能力作为⼀个新的背包来求解,⼀直递推到承重为0的背包问题。

m[i,w] 表示偷到商品的总价值,其中 i 表示⼀共多少个商品,w 表示总重量,所以求解 m[i,w]就是子问题,那么看到某⼀个商品i的时候,如何决定是不是要装进背包,需要考虑以下:

  • 该物品的重量大于背包的总重量,不考虑,换下⼀个商品;

  • 该商品的重量小于背包的总重量,那么尝试把它装进去,如果装不下就把其他东西换出来,看看装进去后的总价值是不是更高了,否则还是按照之前的装法;

  • 极端情况,所有的物品都装不下或者背包的承重能力为0,那么总价值都是0;

由以上的分析,可以得出m[i,w]的状态转移方程为:

m[i,w] = max{m[i-1,w], m[i-1,w-wi]+vi}

3.2.3 程序设计

# 循环的⽅式,自底向上求解cache = {}items = range(1,9)weights = [10,1,5,9,10,7,3,12,5]values = [10,20,30,15,40,6,9,12,18]# 最⼤承重能⼒W = 4def knapsack():    for w in range(W+1):        cache[get_key(0,w)] = 0    for i in items:        cache[get_key(i,0)] = 0        for w in range(W+1):            if w >= weights[i]:                if cache[get_key(i-1,w-weights[i])] + values[i] > cache[get_key(i-1,w)]:                    cache[get_key(i,w)] = values[i] + cache[get_key(i-1,w-weights[i])]                else:                    cache[get_key(i,w)] = cache[get_key(i-1,w)]            else:                cache[get_key(i,w)] = cache[get_key(i-1,w)]    return cache[get_key(8,W)]def get_key(i,w):    return str(i)+','+str(w)if __name__ == '__main__':    # 背包把所有东西都能装进去做假设开始    print(knapsack())
29>>>

以上就是python程序设计的方法的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注编程网Python频道哦!

--结束END--

本文标题: python程序设计的方法

本文链接: https://lsjlt.com/news/342086.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python程序设计的方法
    本篇文章和大家了解一下python程序设计的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。Python是一种面向对象oop(Object Oriented Programming)的脚本语言。面向对象是采用基于对象(...
    99+
    2023-07-02
  • OpenMP并行程序设计方法是什么
    本篇内容主要讲解“OpenMP并行程序设计方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“OpenMP并行程序设计方法是什么”吧!在VC8.0中项目的属...
    99+
    2024-04-02
  • php面向对象程序设计的方法是什么
    这篇文章主要介绍“php面向对象程序设计的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php面向对象程序设计的方法是什么”文章能帮助大家解决问题。类与对象类是一种用于定义对象的蓝图,它描...
    99+
    2023-07-05
  • 【python技能树】python程序设计思想
    0 Python编程思想 Python是一种面向对象oop(Object Oriented Programming)的脚本语言。 面向对象是采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。 在面向对象程序设计中...
    99+
    2023-09-02
    python 自顶向下 自底向上 程序设计思想 python技能树
  • 【Python】计算程序运行时间的方法总结
    一、第一种方法 利用time包: import timedef test(): start_time = time.time() # 记录程序开始运行时间 s = 0 for i ...
    99+
    2023-09-06
    python
  • python3.5程序设计
    Python语言的特点有:易于学习:语法和结构简单,学习起来更加简单。易于阅读:Python代码定义更清晰。易于维护:源代码是相当容易维护的。广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Ma...
    99+
    2023-01-30
    程序设计
  • Python面向对象的程序设计详情
    1. 设计一个圆类,包括圆心位置、半径、颜色等属性。编写构造方法, 计算周长和面积。 import math class Circle:     def __init__(self,...
    99+
    2024-04-02
  • Java分支结构程序设计方法是什么
    这篇“Java分支结构程序设计方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java分支结构程序设计方法是什么”文...
    99+
    2023-06-29
  • 实现Runnable接口的多线程程序设计方法是什么
    这篇文章将为大家详细讲解有关实现Runnable接口的多线程程序设计方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现Runnable接口的多线程程序设计方法  Java语言中提供...
    99+
    2023-06-03
  • Python设计方法有哪些
    这篇文章主要介绍“Python设计方法有哪些”,在日常操作中,相信很多人在Python设计方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python设计方法有哪些”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-02
  • 详解设计模式中的工厂方法模式在Python程序中的运用
    工厂方法(Factory Method)模式又称为虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,属于类的创建型模式。在工厂方法模式中,父...
    99+
    2022-06-04
    模式 详解 工厂
  • 一起聊聊python程序设计思想
    本篇文章给大家带来了关于python的相关知识,其中主要整理了程序设计思想的相关问题,Python是一种面向对象oop(Object Oriented Programming)的脚本语言,编程思想的核心就是理解功能逻辑,下面一起来看一下,希...
    99+
    2022-06-27
    python
  • Python语言程序设计之一--for循
    最近学到了Pyhton中循环这一章。之前也断断续续学过,但都只是到了函数这一章就停下来了,写过的代码虽然保存了下来,但是当时的思路和总结都没有记录下来,很可惜。这次我开通了博客,就是要把这些珍贵的学习思考总结记录下来。从现在开始。 关于这...
    99+
    2023-01-30
    语言程序设计 Python
  • Python语言程序设计之二--用tur
    这篇笔记依然是在做《Python语言程序设计》第5章循环的习题。其中有两类问题需要记录下来。 第一是如何画围棋棋盘。围棋棋盘共有19纵19横。其中,位于(0,0)的星位叫天元,其余8个星位坐标分别是:(-6,6),(0,6),(6,6),...
    99+
    2023-01-30
    之二 语言程序设计 Python
  • $stmt php在程序设计中的重要性及实践方法
    $stmt PHP在程序设计中的重要性及实践方法 在进行PHP编程的过程中,使用$stmt对象来执行预处理语句(Prepared Statement)是一种非常有价值的技术。这种技术不...
    99+
    2024-02-27
    方法 php stmt sql语句 防止sql注入
  • C++面向对象程序设计方法怎么实现
    这篇文章主要讲解了“C++面向对象程序设计方法怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++面向对象程序设计方法怎么实现”吧!C++支持数据封装支持数据封装就是支持数据抽象。在...
    99+
    2023-06-17
  • C#网络编程客户端程序设计方法是什么
    本篇内容介绍了“C#网络编程客户端程序设计方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#网络编程客户端程序设计(1).连接到服...
    99+
    2023-06-17
  • Java程序设计基础实验一Java简单程序设计
    实验一 JAVA简单程序设计 一、实验目的 1.掌握Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序。 2.掌握同时编译多个Java文件。 3.掌握char型数据和int型数据之间的相互转换,同时了解Unicode字符表。 ...
    99+
    2023-10-11
    java
  • 浙大Python程序设计(MOOC)习题答案
    章节 第一章7-1 从键盘输入两个数,求它们的和并输出7-2 从键盘输入三个数到a,b,c中,按公式值输出7-3 输出“人生苦短,我学Python”7-4 写字母H 第二章7-1 计算 ...
    99+
    2023-10-23
    python 经验分享
  • Python语言程序设计之三--列表Li
    最近在学习列表,在这里卡住了很久,主要是课后习题太多,而且难度也不小。像我看的这本《Python语言程序设计》--梁勇著,列表和多维列表两章课后习题就有93道之多。我的天!但是题目出的非常棒,许多题目都具有相似性。这倒不是说这些题目类似,...
    99+
    2023-01-30
    之三 语言程序设计 列表
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作