精华内容
下载资源
问答
  • ERP原理:第一节 ERP的总体结构

    千次阅读 2019-05-18 10:58:01
    第一节 ERP的总体结构 当今企业所使用的ERP系统种类很多,各ERP系统所包括的功能范围、乃至各功能模块的划分及名称也有所不同。但一般都涵盖了计划、销售、供应、生产、财务、人事等企业的职能。 但不管哪一家的...

    第一节 ERP的总体结构

    当今企业所使用的ERP系统种类很多,各ERP系统所包括的功能范围、乃至各功能模块的划分及名称也有所不同。但一般都涵盖了计划、销售、供应、生产、财务、人事等企业的职能。
    但不管哪一家的ERP系统,都是以“平衡供需”为目的、以计划为中心思想的,并将各管理职能作紧密的集成。因为企业本来就是一个非常复杂的分工与合作的系统,ERP系统只有做到了职能间的高度集成,才能跨职能地通盘规划、达成供需平衡,并有效地执行和控制。
    所以要了解ERP系统的基本结构,就必须理解ERP系统中职能集成的基本逻辑。
    一.名词解释
    ERP系统中有很多职能集成所必需,但手工管理方式下所没有的重要名词。以下一一解释这些名词的意义及功能。
    1.现存量(On Hand Quantity)
    即仓库中现有料品(成品、半成品、采购件)的库存数量。如果按英文直译叫做“在手量”,所以现存量表示一个已经拥有的料品的数量。
    2.在单量(On Order Quantity)
    假设本公司向供应商发出一张采购订单,采购A料品300个库存单位,这时我们就可以说料品A的“在单量”为300个库存单位。在单量表示“已经计划好了将来要有,但目前还未真正拥有的数量”,直观地把它想象成是一个“在单据上的”数量。
    (1) 对采购件而言:指已下采购订单而供应厂商尚未交货(验收入库)的数量。
    (2) 对自制成品、半成品而言:指已下生产订单而制造车间尚未完工入库的数量。
    (3) 对委外件而言:指已下达委外单而委外厂商尚未交货(验收入库)的数量。
    3.预约量(Allocated Quantity)
    如果客户向本公司下单订购A产品100台,双方约定20天后交货。这时产品A的“预约量”就为100台。“预约”表示一种“将来要发生而现在还没有发生的”需求量。
    为什么在接到客户订单时,电脑系统要记录客户订购产品的“预约量”呢?因为预约量代表一种“待发”的数量,可以让我们事先预估料品将来的现存量是否会不足,而针对可能发生的缺货状况预作准备。
    (1)对采购件而言:已发生产订单或委外单,要领用而车间或委外厂商尚未领料的数量。
    (2)对成品而言:已接到客户订单而尚未交货的数量。
    (3)对自制半成品而言:已发生产订单或委外单,要领用而车间或委外厂商尚未领料的数量。
    (4)对委外件而言:已发生产订单或委外单,要领用而车间或委外厂商尚未领料的数量。
    4.现存可用量(On Hand Available Quantity)
    假设料品A的现存量为500台,而预约量为200台,那么我们称“500台-200台=300台”为A料品的“现存可用量”。也就是说,公司手中料品A在满足现有客户订单量情况下,还可以供新接订单来使用的数量有300台。看到现存可用量,就知道能够再承接客户订单而可立即出货的数量。
    现存可用量 = 现存量 – 预约量
    5. 可用量(Available Quantity)
    上例中,A料品的现存可用量为300台,是否目前公司还能接受的订单量只有300台呢?假若A料品还有一个在单量为200台,那么对销售人员而言,公司到目前为止总共还可再接A料品300台+2000台=500台订单。该500台,称作“可用量”。
    可用量 = 现存可用量 + 在单量
    = 现存量 - 预约量 + 在单量
    通过上述名词解释,我们可以看出“在单量”代表供应量,而“预约量”则代表了需求量。所以这两个量的掌握,对于库存的供需平衡是至关重要的。
    但是手工管理方式下,对库存量的掌握是不完整的。手工方式下,我们的数据只有现存量,无法记录在单量与预约量,自然也无法算出可用量了。因此,无法提供管理者应用时所要的讯息,当然也就不可能作好供需平衡、通盘规划了。

    二.连动关系的处理方法
    从本质上讲,职能的集成,即是对数量和时间的连动关系的掌握。
    1.数量的连动关系
    举例说明(下列活动对象为产品A,现存量为零):
    (1)公司在8月5日,发出生产订单(MO0208001),要生产200台。
    (2)8月8日,生产订单MO0208001部分完工入库180台。
    (3)8月10日,业务人员接到客户订单(CO0208001),数量为80台。
    (4)8月15日,客户订单CO0208001发货80台。
    (5)8月20日,业务人员又接订单(CO0208002),数量300台。
    我们注意8月20日产品A的库存资料:现存可用量为-200,即现存量100台不足客户订单CO0208002所需,但有一个在单量20台,那么还应该安排生产产品A多少才够客户订单CO0208002所需呢?
    很显然,有两个结果:(1)如果在单量20个的完工日期在客户订单CO0208002的交货日期之前,那么只要在客户订单CO0208002的交货日期之前,再安排生产完成180台即可;(2)如果在单量20个的完工日期在客户订单CO0208002的交货日期之后,那么就需要在客户订单CO0208002的交货日期之前,再安排生产完成200台。
    可见,只是掌握料品“数量”的连动关系是不够的,我们还必须再考虑“时间”的连动关系的处理,因为没有时间的数量往往是没有意义的。
    2.时间的连动关系
    接上例,假设:
    (1)生产订单MO0208001余量20台,计划于8月25日完工入库;
    (2)8月21日再下一生产订单MO0208002,数量200台,计划完工日期8月27日;
    (3)客户订单CO0208002数量300台,其预计交货日期为8月28日。
    3.连动关系的处理方法:自动规划
    再接上例,假设:
    (1)业务人员接到订单CO0208003,数量400台,预定交货日9月5日;
    (2)业务人员又接到客户订单CO0208004,数量500台,预定交货日9月10日;
    请问如何制定生产计划,以满足上述客户订单的要求呢?
    由上可知,制造部门应该在9月5日和9月10日,分别完工入库A产品380台和500台。
    假设产品A的生产提前期为3天,则生产部门所制定的制造计划应该如下(未考虑休息日):
    (1)9月2日,发出生产订单,制造数量为380台,预计完工日9月5日;
    (2)9月7日,发出生产订单,制造数量为500台,预计完工日9月10日。
    借助于这样的集成的逻辑,我们就可以将销、供、产职能紧密地联系起来,协助我们作好供需平衡,以及通盘规划和执行控制的工作。
    三.ERP系统的总体结构
    以上有关数量和时间的连动关系的处理方法,就构成了物料需求规划(MRP:Material Requirement Planning)的最基本的技巧。当然,上述逻辑还过于简化。比如企业生产的产品的构成可能是很复杂的,一个成品往往是由很多半成品组成,而这些半成品又由很多其它零组件或原物料加工而成。所以时间和数量的连动关系的处理,是按产品的物料清单(BOM:Bill of Material)的阶层来逐阶进行的。如果不同产品中再出现共用料件的状况,那么处理的逻辑就更复杂。有关MRP计算的逻辑,我们会在下面的章节中作详细的解说,在此简要介绍MRP系统的观念性架构
    制造企业在大量应用MRP系统而取得管理效益后,又把生产能力的需求计算也纳入系统,因而产生了“产能需求规划(CRP:Capacity Requirement Planning)”,同时也把“车间管理(SFC:Shop Floor Control)”、销售职能的“分销需求规划(DRP:Distribution Requirement Planning)”、应收帐款和应付帐款的管理、总帐会计…等功能都加以整合起来,形成了管理整个制造企业资源的管理系统,因而称作“制造资源规划”系统(Manufacturing Resource Planning),其英文简称也是MRP。因此,MRP系统有了狭义与广义之分,狭义的MRP是指“物料需求规划系统”,广义的MRP则是指“制造资源规划系统”。也有人将前者称为MRP,称后者为MRPⅡ。
    近几年来,随着信息技术(IT:Information Technology)的飞速发展,企业利用先进的信息技术,而将MRP系统的应用范围更加扩大,把企业与上游供应商和下游客户往来的信息也纳入管理。这种应用范围的扩大,一是可以大大增强企业整个供应链对市场的应变能力,同时也减少了彼此在数据处理的时间和成本。这种系统,叫做“企业资源规划(ERP:Enterprise Resources Planning)。
    尽管不同的ERP系统在功能面上,都存在或多或少的差异,但总体结构基本上是相似的。

    展开全文
  • 浙江省数字化改革总体方案(165页).pdf
  • “架构”到底指什么

    千次阅读 多人点赞 2018-11-01 09:51:09
    架构设计是技术人员成长和晋升过程中必须掌握的技能,虽然非常常见,但深究一下“架构”到底指什么,有多少人能够准确回答呢? 本文选自《从零开始学架构:照着做,你也能成为架构师》 对于技术人员来说,“架构...

    架构设计是技术人员成长和晋升过程中必须掌握的技能,虽然非常常见,但深究一下“架构”到底指什么,有多少人能够准确回答呢?

    本文选自《从零开始学架构:照着做,你也能成为架构师》

    对于技术人员来说,“架构”是一个再常见不过的词了:我们会给新员工介绍整个系统的架构,参加架构设计评审,学习业界开源系统(例如,MySQL、Hadoop)的架构,研究大公司的架构实现(例如,微信架构、淘宝架构)……虽然如此常见,但如果深究一下“架构”到底指什么,大部分人不一定能够准确地回答。例如: 

    • 架构和框架是什么关系?有什么区别? 

    • Linux有架构,MySQL有架构,JVM也有架构,使用Java开发、MySQL存储、跑在Linux上的业务系统也有架构,应该关注哪个架构呢? 

    • 微信有架构,微信的登录系统也有架构,微信的支付系统也有架构,当我们谈微信架构时,到底在谈什么架构? 

    要想准确地回答以上问题,关键在于梳理几个有关系而又相似的概念,包括系统、子系统、模块、组件、框架和架构。

     系统与子系统

    系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”。

    提炼维基百科定义的关键内容。 

    (1)关联:系统是由一群有关联的个体组成的,没有关联的个体堆在一起不能成为一个系统。例如,把一个发动机和一台PC放在一起不能称之为一个系统,把发动机、底盘、轮胎、车架组合起来才能成为一台汽车。 

    (2)规则:系统内的个体需要按照指定的规则运作,而不是单个个体各自为政。规则规定了系统内个体分工和协作的方式。例如,汽车发动机负责产生动力,然后通过变速器和传动轴,将动力输出到车轮上,从而驱动汽车前进。 

    (3)能力:系统能力与个体能力有本质的差别,系统能力不是个体能力之和,而是产生了新的能力。例如,汽车能够载重前进,而发动机、变速器、传动轴、车轮本身都不具备这样的能力。 

    子系统的定义其实和系统的定义是一样的,只是观察的角度有差异,一个系统可能是另外一个更大系统的子系统。

    子系统也是由一群有关联的个体所组成的系统,多半是更大系统中的一部分。

    按照这个定义,系统和子系统比较容易理解。我们以微信为例(以下内容仅仅是举例,微信不一定这么设计): 

    (1)微信本身是一个系统,包含聊天、登录、支付、朋友圈等子系统。 

    (2)朋友圈这个系统又包括动态、评论、点赞等子系统。 

    (3)评论这个系统可能又包括防刷子系统、审核子系统、发布子系统、存储子系统。 

    (4)评论审核子系统不再包含业务意义上的子系统,而是包括各个模块或组件,这些模块或组件本身也是另外一个维度上的系统。例如,MySQL、Redis等是存储系统,但不是业务子系统。 

    以下是网上公开的微信朋友圈的架构示意图。

    模块与组件

    模块和组件两个概念在实际工作中很容易混淆,我们经常能够听到类似如下的说法: 

    (1)MySQL模块主要负责存储数据,而Elasticsearch模块主要负责数据搜索。 

    (2)我们有安全加密组件、有审核组件。 

    (3)App的下载模块使用了第三方的组件。 

    造成这种现象的主要原因是两者的定义并不好理解,也不能很好地进行区分。我们来看看维基百科中两者的定义。 

    【模块】

    软件模块(Module)是一套一致且互相有紧密关联的软件组织,它包含程序和数据结构两部分。现代软件开发往往利用模块作为合成的单位。 

    模块的接口表达了由该模块提供的功能和调用它时所需的元素。 

    模块是可能分开被编写的单位,这使得它们可再用,并允许开发人员同时协作、编写及研究不同的模块。

    【组件】

    软件组件定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易地被用于组装应用程序。

    相信大部分人看完这两个定义还是一头雾水,看完也不知道到底两者有什么区别。造成这种现象的根本原因是模块和组件都是系统的组成部分,只是从不同的角度拆分系统而已。从逻辑的角度来拆分后得到的单元就是“模块”,从物理的角度来拆分系统得到的单元就是“组件”;划分模块的主要目的是职责分离,划分组件的主要目的是单元复用。“组件”的英文单词component对应中文的“零件”一词,“零件”更容易理解一些,“零件”是一个物理的概念,并且具备“独立且可替换”的特点。 

    下面以一个最简单的网站系统为例,假设我们要做一个学生信息管理系统,这个系统从逻辑的角度来拆分,可以分为“登录注册模块”“个人信息模块”“个人成绩模块”;从物理的角度来拆分,可以拆分为Nginx、Web服务器、MySQL。 

    框架与架构

    框架是和架构比较相似的概念,且两者有较强的关联关系,所以在实际工作中,很多时候这两个概念并不是区分得很清楚。 

    参考维基百科,框架的定义如下:

    软件框架(Software Framework)通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。

    提炼维基百科定义的关键部分。 

    (1)框架是组件规范。例如,MVC就是一种最常见的开发规范,类似的还有MVP、MVVM、J2EE等框架。 

    (2)框架提供基础功能的产品。例如,Spring MVC是MVC的开发框架,除了满足MVC的规范,Spring提供了很多基础功能来帮助我们实现功能,包括注解(@Controller等)、Spring Security、Spring JPA等很多基础功能。 

    参考维基百科,架构的定义如下(请搜索英文关键字Software Architecture,中文的词条解释很粗浅)。

    Software architecture refers to the fundamental structures of a software system, the discipline of creating such structures, and the documentation of these structures. 

    简单翻译一下:软件架构是指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。 

    单纯从定义的角度来看,框架和架构的区别还是比较明显的,框架关注的是“规范”,架构关注的是“结构”。框架的英文是Framework,架构的英文是Architecture。Spring MVC的英文文档标题就是“Web MVC Framework”。 

    虽然如此,在实际工作中我们却经常碰到一些似是而非的说法。例如,“我们的系统是MVC架构”,“我们需要将Android App重构为MVP架构”,“我们的系统基于SSH框架开发”,“我们是SSH的架构”,“XX系统是基于Spring MVC框架开发,标准的MVC架构”……究竟什么说法是对的,什么说法是错的呢? 

    其实这些说法都是对的,造成这种现象的根本原因隐藏于架构的定义中,关键就是“基础结构”这个概念并没有明确说是从什么角度来分解的。从不同的角度或维度,可以将系统划分为不同的结构,其实我们在“模块与组件”中的样例已经暗含了这点,继续以学生管理系统为例。 

    从业务逻辑的角度分解,“学生管理系统”的架构如下图所示。

    从物理部署的角度分解,“学生管理系统”的架构如下图所示。

    从开发规范的角度分解,“学生管理系统”可以采用标准的MVC框架来开发,因此架构又变成了MVC架构,如下图所示。

    以上这些“架构”,都是“学生管理系统”正确的架构,只是从不同的角度来分解而已,这也是IBM的RUP将软件架构视图分为著名的“4+1视图”的原因。 

    重新定义架构

    我们参考维基百科的定义,将架构重新定义为:软件架构指软件系统的顶层结构! 

    这个定义很简单,但包含的信息很丰富,基本上把系统、子系统、模块、组件、架构等概念都串起来了,详细阐述如下。 

    首先,“系统由一群关联个体组成”,这些“个体”可以是“子系统”“模块”“组件”等,架构需要明确系统包含哪些“个体”。 

    其次,系统中的个体需要“根据某种规则”运作,架构需要明确个体运作和协作的规则。 

    第三,维基百科的架构定义中用到了“基础结构”这个说法,我们改为“顶层结构”,可以更好地区分系统和子系统,避免将系统架构和子系统架构混淆导致架构层次混乱。

    本文选自《从零开始学架构:照着做,你也能成为架构师》,作者李运华,电子工业出版社9月出版。

    图书详情:https://u.jd.com/30ze9a

    展开全文
  • 测验1:Python基本语法元素 ...IPO模型:Input Process Output 字符串的正向递增和反向递减序号体系:正向是从左到右,0到n-1,反向是从右到左,-1到-n,举例str = "csdn" # str[0]就表示字符串c...

    测验1:Python基本语法元素

    知识点概要:

    • 普遍认为Python语言诞生于1991
    • Python语言中的缩进在程序中长度统一且强制使用,只要统一即可,不一定是4个空格(尽管这是惯例)
    • IPO模型指:Input Process Output
    • 字符串的正向递增和反向递减序号体系:正向是从左到右,0到n-1,反向是从右到左,-1到-n,举例
    str = "csdn" 
    #str[0]就表示字符串c, str[-1]表示"n"
    
    • Python的合法命名规则:命名包含字母,数字,下划线,但是首字符不能是数字
    • Python中获得用户输入的方式为:input()
    • Python中的保留字:type不是,是内置函数,def elif import 都是保留字
    • Python的数据类型有整数、列表、字符串等,但是不包括实数,实数是数学概念,在Python中对应着浮点数
    • 保留字if-elif-else用于表示分支结构,in用来进行成员判断
    • print()格式化输出,控制浮点数的小数点后两位输出应为:print("{:.2f}".format(XX)) :.2f哪一个都不能少

    编程测试:

    • Hello World 的条件输出:获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      如果输入值是0,直接输出"Hello World"‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      如果输入值大于0,以两个字符一行方式输出"Hello World"(空格也是字符)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      如果输入值小于0,以垂直方式输出"Hello World"
    # eval()函数可以将默认输入的字符串去掉双引号并进行表达式运算,如输入500+20,默认
    #得到的输入为一个字符串“500+20”,但是使用eval()函数我们得到的是一个整型数字:520
    Number = eval(input())
    if Number == 0:
        print("Hello World")
    elif Number > 0:
        print("He\nll\no \nWo\nrl\nd")
    else:
        for c in "Hello World":
            print(c)
    
    • 数值运算:获得用户输入的一个字符串,格式如下:M OP N ,其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬根据OP,输出M OP N的运算结果,统一保存小数点后2位。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。
    print("{:.2f}".format(eval(input())))
    

    测验2:Python基本图形绘制

    知识点概要:

    • 正确引用turtle库的方式:
    import turtle
    #t是别名,可以更换其他名称
    import turtle as t 
    from turtle import setup
    from turtle import *
    

    import setup from turtle是不正确的

    • turtle库是一个直观有趣的图形绘制函数库,最早成功应用于LOGO编程语言,turtle绘图体系以水平右侧为绝对方位的0度,turtle坐标系的原点****默认在屏幕正中间
    • turtle.circle(-90,90)表示绘制一个半径为90像素的弧形,圆心在小海龟当前行进的右侧
    # circle(x,y)表示以x长度为半径,y为角度,
    #当前方向左侧x处为圆心画圆,其中x,y都可以是负数,相应取反
    #当前方向是水平向右的,对应直角坐标系中的x轴正方向
    #x为正,则圆心在y轴正方向上,y为正,逆时针画圆,圆弧角度为y
    #x为负则相反,圆心在y轴负方向上,y为正,顺时针画圆,圆弧角度为y
    
    • turtle.seth(to_angle)函数的作用是设置小海龟当前行进方向为to_angle,to_angle是角度的整数值
    • turtle.fd(distance)函数的作用是向小海龟当前行进方向前进distance距离
    • turtle.pensize(size)函数的作用是改变画笔的宽度为size像素
    • turtle**.circle**()函数不能绘制椭圆形
    • turtle.circle(x,y)函数绘制半圆,第二个参数y是180的奇数倍
    • turtle.penup()的别名有turtle.pu(),turtle.up()
    • turtle.colormode()的作用是设置画笔RGB颜色的表示模式
    • turtle.width()和turtle.pensize()都可以用来设置画笔尺寸
    • turtle.pendown()只是放下画笔,并不绘制任何内容
    • 改变turtle画笔的运行方向有left()、right()和seth()函数,bk()只能后退,但是不改变方向
    • turtle.done()用来停止画笔绘制,但绘图窗体不关闭,建议在每个turtle绘图最后增加turtle.done()
    • 循环相关保留字是:for…in和while,def用于定义函数

    编程测试:

    • turtle八边形绘制:使用turtle库,绘制一个八边形
    import turtle as t
    t.pensize(2)
    for i in range(8):
        t.fd(100)
        t.left(45)
    
    • turtle八角图形绘制:使用turtle库,绘制一个八角图形
    import turtle as t
    t.pensize(2)
    for i in range(8):
        t.fd(150)
        t.left(135)
    

    测验3:基本数据类型

    知识点概要:

    • pow(x,0.5)能够计算x的平方根,计算负数的平方根将产生复数
    • 字符串.strip()方法的功能是去掉字符串两侧指定的字符
    • 字符串.split()方法的功能是按照指定字符分隔字符串为数组
    • 字符串.repalce()方法的功能是替换字符串中特定字符
    • +操作符用来连接两个字符串序列
    • 字符串是一个连续的字符序列,使用\n可以实现打印字符信息的换行
    • val = pow(2,1000)
      #返回val结果的长度值要使用 len(str(val)),因为整型没有len()方法,要通过str()函数
      #将数字类型转换为字符串
    • 正确引用time库的方式如下:
    import time
    from time import strftime
    from time import *
    
    • Python语言的整数类型表示十进制(一般表示)二进制(0b或0B开头)八进制(0o或0O开头)十六进制(0x或0X开头)
    • %运算符的意思是取余数
    • 字符串切片操作:s[N:M],从N到M,但是不包括M
    name="Python语言程序设计课程"
    print(name[0],name[2:-2],name[-1])
    #输出结果为:P thon语言程序设计 程
    
    • print("{0:3}".format('PYTHON'))代码执行的结果是PYTHON,{0:3}表示输出的宽度是3,但是如果字符串长度超过3就以字符串长度显示

    编程测试:

    • 平方根格式化:获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬输出结果采用宽度30个字符、右对齐输出、多余字符采用加号(+)填充,‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬如果结果超过30个字符,则以结果宽度为准
    a = eval(input())
    print("{:+>30.3f}".format(a**0.5)) 
    # +是填充字符 >是右对齐 30是宽度 .3f是保留小数点后3位
    #若平凡根后是一个复数,复数的实部和虚部都是浮点数,.3f可以将实部和虚部分别取三位小数
    
    • 字符串分段组合:获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出
    InputStr = input()
    strs = InputStr.split('-')
    print(strs[0]+'+'+strs[-1])
    print("{}+{}".format(strs[0], strs[-1]))
    #s.split(k)以k为标记分割s,产生一个列表
    #通过该题目,掌握split()方法的使用,注意:k可以是单字符,也可以是字符串
    

    测验4:程序的控制结构

    知识点概要:

    • for…in…中in的后面需要的是一个迭代类型(组合类型),{1;2;3;4;5}不是Python的有效数据类型
    • range(x,y)
    for i in range(0,2):
    	print(i)
    #输出结果为:0 1
    
    • 程序的三种基本结构:顺序结构,循环结构和分支结构
    • 循环是程序根据条件判断结果向后反复执行的一种运行方式,是一种程序的基本控制结构,条件循环和遍历循环结构都是基本的循环结构,死循环能够用于测试性能,形式上的死循环可以用break来退出,例如
    x = 10
    while True:
    	x = x -1
    	if x == 1:
    		break
    
    • p = -p #表示给p赋值为它的负数,Python中的=是赋值符号
    • 缩进表达层次关系,同时用来判断当前Python语句在分支结构
    • continue结束当次循环,但是不跳出循环
    • random库中用于生产随机小数的函数是random(),而randint()/getrandbits()/randrange()都产生随机整数
    • 程序错误是一个大的概念,不仅指代码运行错误,更代表功能逻辑错误。使用异常处理try-excepy,可以对程序的异常进行捕捉和处理,程序运行可能不会出错,但逻辑上可能会出错

    编程测试:

    • 四位玫瑰数:四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬
      例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‮‬‫
      请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行
    #个人思路:求四位数的各个位数abcd
    for i in range(1000,10000):
        a = i%10
        b = (i//10)%10
        c = (i//100)%10
        d = (i//1000)%10
        if a**4 + b**4 + c**4 + d**4 == i:
            print(i)
    #参考答案:字符串+eval()
    s = ""
    for i in range(1000, 10000):
        t = str(i)
        if pow(eval(t[0]),4) + pow(eval(t[1]),4) + pow(eval(t[2]),4) + pow(eval(t[3]),4) == i :
            print(i)
    
    • 100以内素数之和:求100以内所有素数之和并输出‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      素数指从大于1,且仅能被1和自己整除的整数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬,提示:可以逐一判断100以内每个数是否为素数,然后求和
    sum = 0
    for i in range(2,100):
        isFlag = 1 #判断是否为素数
        for j in range(2,i): #遍历2-i-1,看是否能被i整除
            if i%j == 0: #被整除说明不是素数
                isFlag = 0
                break
        if isFlag == 1:
            sum += i
    print(sum)
    #参考答案:将判断是否为素数封装为一个函数,倾向于这种解题思路
    def is_prime(n):
        for i in range(2,n):
            if n%i == 0:
                return False
        return True
    sum = 0
    for i in range(2,100):
        if is_prime(i):
            sum += i
    print(sum)
    

    测验5:函数和代码复用

    知识点概要:

    • 函数作用:增强代码可读性、降低编程复杂度、复用代码,函数不能直接提高代码的执行速度
    • 全局变量与局部变量:函数的参数一般为局部变量,函数内使用global s 表示变量s为全局变量
    • 函数调用前必须已经存在函数定义,否则无法执行,Python内置函数直接使用,不需要引用任何模块
    • 模块内高耦合,模块间低耦合:高耦合的特点是复用较为困难,模块间关系应尽可能简单,模块之间耦合度低,尽可能合理划分功能块,功能块内部耦合度高
    • 递归不会提高程序的执行效率,任何递归程序都可以通过堆栈或队列变为非递归程序
    • 函数是一段具有特定功能的、可重用的语句组,可以看做是一段具有名字的程序,通过函数名来调用,同时不需要知道函数的内部实现原理,只需要知道调用方法(接口)即可
    • def func(*a,b):是错误的函数定义,*a表示可变参数,可变参数只能放在函数参数的最后,即def func(a,*b):
    • 函数可以包含0个或多个return语句
    • 每个递归函数至少存在一个基例,但可能存在多个基例,基例表示不再进行递归,同时决定了递归的深度

    编程测试:

    • 随机密码生成:以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出,产生密码采用random.randint()函数
    import random
    def genpwd(length):
        a = 10**(length-1)
        b = 10**length - 1
        return "{}".format(random.randint(a, b))
    length = eval(input())
    random.seed(17)
    for i in range(3):
        print(genpwd(length))
    
    #思路类似,同样过了
    def genpwd(length):
        high = 10**length
        low = 10**(length-1)
        return random.randrange(low,high)
    
    • 连续质数计算:获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。
      注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号
    def prime(m): #判断是否为质数
        for i in range(2,m):
            if m%i == 0:
                return False
        return True
        
    n = eval(input())
    if n != int(n): #考虑输入为浮点数的情况
        n = int(n) + 1
    else:
        n = int(n)   
        
    times = 0 #统计质数的次数
    res = [] #存放输出结果
    while times < 5:
        if prime(n):
            res.append(n)
            times += 1
        n += 1
    for i in res[:len(res)-1]:
        print(i,end=",")
    print(res[-1]) #最后一个不输出逗号
    
    #参考答案
    def prime(m):
        for i in range(2,m):
            if m % i == 0:
                return False
        return True
    #需要对输入小数情况进行判断,获取超过该输入的最小整数(这里没用floor()函数)
    n = eval(input())
    n_ = int(n)
    n_ = n_+1 if n_ < n else n_
    count = 5
    #对输出格式进行判断,最后一个输出后不增加逗号(这里没用.join()方法)
    while count > 0:
        if prime(n_):
            if count > 1:
                print(n_, end=",")
            else:
                print(n_, end="")
            count -= 1 
        n_ += 1
    

    测验6:组合数据类型

    知识点概要:

    • 列表ls,ls.append(x)表示只能向列表最后增加一个元素,如果x是一个列表,则该列表作为一个元素增加到ls中
    • 集合“交并差补”四种运算分别对应的运算符是:& | - ^
    • 字典d,d.values()返回的是dict_values类型,包括字典中的所有值,通常与for…in组合使用
    • Python的元组类型:元组采用逗号和圆括号(可选)来表示,一旦创建就不能修改,一个元组可以作为另一个元祖的元素,可用多级索引获取信息,序列类型(元组、列表)中的元素都可以是不同类型
    • 创建字典时,如果相同键对应不同值,字典采用最后一个"键值对"
    d= {'a': 1, 'b': 2, 'b': '3'}
    print(d['b'])
    #输出结果:3
    
    • 集合与字典类型最外侧都用{}表示,不同在于集合类型元素是普通元素,字典类型元素是键值对。字典在程序设计中非常常用,因此直接采用{}默认生成一个空字典
    • 对于字典d:x in d表示判断x是否是字典d中的键,键是值的序号,也是字典中值的索引方式
    • Python序列类型有:列表类型、元组类型、字符串类型(Python内置数据类型中没有数组类型)
    • 组合数据类型能够将多个相同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序、更容易
    • 组合数据类型可以分为3类:序列类型、集合类型和映射类型;
    • Python的字符串元组列表类型都属于序列类型,序列类型总体上可以看成一维向量,如果其元素都是序列,则可被当作二维向量
    • 对于序列s:s.index(x)返回序列s中元素x第一次出现的序号,并不返回全部序号

    编程测试:

    • 数字不同数之和:获得用户输入的一个整数N,输出N中所出现不同数字的和‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      例如:用户输入 123123123,其中所出现的不同数字为:1、2、3,这几个数字和为6
    #参考答案:字符串可以通过list()直接变成列表,或通过set()直接变成集合
    n = input()
    ss = set(n)
    s = 0
    for i in ss:
        s += eval(i)
        #s += int(i) #同样可以
    print(s)
    
    • 人名最多数统计:给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名
    #先使用字典建立"姓名与出现次数"的关系,然后找出现次数最多数对应的姓名
    s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 
           杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 
           金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍 
           鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰 
           阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰 
           乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王 
           忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正 
           李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复 
           逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣 
           洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复 
           黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄 
           张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫 
           洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈 
           完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱 
           郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲 
           谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉 
           双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏 
           逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''
           
    names = s.split()
    d = {}
    for name in names:
        d[name] = d.get(name, 0) + 1
    Maxkey = ""
    MaxValue = 0
    for k in d:
        if d[k] > MaxValue:
            Maxkey = k
            MaxValue = d[k]
    print(Maxkey)
    #参考答案
    ls = s.split()
    d = {}
    for i in ls:
        d[i] = d.get(i, 0) + 1
    max_name, max_cnt = "", 0
    for k in d:
        if d[k] > max_cnt:
            max_name, max_cnt = k, d[k]
    print(max_name)
    

    测验7:文件和数据格式化

    知识点概要:

    • 数据组织纬度一维数据采用线性方式组织,对应于数学中的数组和集合等概念;二维数据采用表格方式组织,对应于数学中的矩阵;高维数据由键值对类型的数据构成,采用对象方式组织,字典就用来表示高维数据,一般不用来表示一二纬数据
    • Python对文件操作采用的统一步骤是:打开-操作-关闭(其中关闭可以省略)
    • CSV文件格式是一种通用的、相对简单的文件格式,应用于程序之间转移表格数据,CSV文件的每一行是一维数据,可以使用Python中的列表类型表示,整个CSV文件是一个二维数据,一般来说,CSV文件都是文本文件,由相同的编码字符组成
    • 二维列表切片ls = [[1,2,3],[4,5,6],[7,8,9]]获取其中的元素5要使用:ls[1][1]
    • 文件可以包含任何内容,是数据的集合和抽象,是存储在辅助存储器上的数据序列,而函数或类才是程序的集合和抽象
    • 打开文件后采用close()关闭文件是一个好习惯。如果不调用close(),当前Python程序完全运行退出时,该文件引用被释放,即程序退出时,相当于调用了close(),默认关闭
    • Python文件的"+"打开模式,与r/w/a/x一同使用,在原功能基础上同时增加了读写功能,同时赋予文件的读写权限
    • 同一个文件既可以用文本方式打卡,也可以用二进制方式打开
    • 列表元素如果都是列表,其可能表示二维数据,如[[1,2],[3,4],[5,6]],如果列表元素不都是列表,则它表示一维数据
    • Python文件读操作有:read()、readline()、readlines(),没有readtext()方法

    编程测试:

    • 文本的平均列数:打印输出附件文件的平均列数,计算方法如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      (1)有效行指包含至少一个字符的行,不计算空行‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      (2)每行的列数为其有效字符数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬
      (3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位
    #for line in f 获取的line包含每行最后的换行符(\n),所以去掉该换行符再进行统计
    f = open("latex.log", "r", encoding="utf-8")
    lines = 0
    columns = 0
    for line in f:
        line = line.strip("\n")
        if len(line):
            lines += 1
            columns += len(line)
    print("{:.0f}".format(columns/lines))
    f.close()
    
    #参考答案如下:
    f = open("latex.log")
    s, c = 0, 0
    for line in f:
        line = line.strip("\n")
        if line == "":
            continue
        s += len(line)
        c += 1
    print(round(s/c))
    

    -CSV格式清洗与转换:附件是一个CSV格式文件,提取数据进行如下格式转换:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
    (1)按行进行倒序排列‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮
    (2)每行数据倒序排列‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
    (3)使用分号(;)代替逗号(,)分割数据,无空格‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
    按照上述要求转换后将数据输出

    f = open("data.csv", "r", encoding="utf-8")
    txt = f.readlines()
    txt.reverse() #按行进行倒序排列
    for line in txt:
        #line = line.strip("\n") #去除末尾换行符
        #line = line.replace(" ","") #去空格
        line = line.strip("\n").replace(" ", "")
        #ls = line.split(",") 
        #ls = ls[::-1]
        ls = line.split(",")[::-1] #逗号分隔并将分隔后的元素倒序
        print(";".join(ls)) #元素间插入分号
    f.close()
    
    #参考答案(使用strip()方法去掉每行最后的回车,使用replace()去掉每行元素两侧的空格)
    f = open("data.csv")
    ls = f.readlines()
    ls = ls[::-1]
    lt = []
    for item in ls:
        item = item.strip("\n")
        item = item.replace(" ", "")
        lt = item.split(",")
        lt = lt[::-1]
        print(";".join(lt))
    f.close()
    

    测验8:程序设计方法学

    知识点概要:

    • 用户体验:编程只是手段,程序最终为人类服务,用户体验很重要,一个提醒进度的进度条、一个永不抛出异常的程序、一个快速的响应、一个漂亮的图标、一个合适尺寸的界面等都是用户体验的组成部分。总的来说,用户体验是一切能够提升程序用户感受的组成
    • 计算思维是基于计算机的思维模式,计算机出现之前,由于没有快速计算装置,计算所反映的思维模式主要是数学思维,即通过公式来求解问题。当快速计算装置出现后,计算思维才真正形成
    • 软件产品 = 程序功能 + 用户体验 ;产品不仅需要功能,更需要更好的用户体验。往往,产品都需要综合考虑技术功能和人文设计,这源于产品的商业特性。即,商业竞争要求产品不能只关心技术功能,更要关心用户易用和喜好需求
    • os库os.system()可以启动进程执行程序
    • 函数自顶向下设计的关键元素,通过定义函数及其参数逐层开展程序设计
    • os.path子库os.path.relpath(path)用来计算相对路径
    • Python第三方库安装:使用pip命令、使用集成安装工具或访问UCI网站下载安装文件,请不要直接联系作者索要第三方库
    • 计算思维的本质是:抽象自动化
    • os库是Python重要的标准库之一,提供了路径操作、进程管理等几百个函数功能,覆盖与操作系统、文件操作等相关的众多功能;os库适合所有操作系统
    • 计算生态以竞争发展、相互依存和迅速更迭为特点,在开源项目间不存在顶层设计,以类自然界"适者生存"的方式形成技术演进路径

    编程测试:

    • 英文字符的鲁棒输入:获得用户的任何可能输入,将其中的英文字符进行打印输出,程序不出现错误
    inputStr = input()
    for i in inputStr:
        if i.islower() or i.isupper():
            print(i,end="")
         
    #参考答案:采用遍历字符的方式实现,通过约束字母表达到鲁棒效果
    alpha = []
    for i in range(26):
        alpha.append(chr(ord('a') + i))
        alpha.append(chr(ord('A') + i))
    s = input()
    for c in s:
        if c in alpha:
            print(c, end="")
    
    • 数字的鲁棒输入:获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果,要求:
      1)无论用户输入何种内容,程序无错误‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬
      2)如果输入有误,请输出"输入有误"
    number = input()
    try:
        #complex()和complex(eval())之间的比较
        #将能够排除非数字类型的输入
        if complex(number) == complex(eval(number)):
            print(eval(number) ** 2)
    except:
        print("输入有误") 
        
    '''
    不能直接使用eval(),否则用户可以通过输入表达式(如100**2)输入数字
    与要求不同(在实际应用中会带来安全隐患)
    '''
    

    测验9:Python计算生态纵览

    知识点概要:

    • Python网络爬虫方向第三方库有:Requests、Scrapy、pyspider
    • Python数据可视化方向第三方库有:Mayavi、Matplotlib、Seaborn
    • Python Web信息提取方向第三方库有:Beautiful Soup、Python-Goose、Re
    • Python游戏开发第三方库有:Panda3D、cocos2d、PyGame
    • Python数据分析方向第三方库有:Numpy、Pandas、Scipy
    • Python图形用户界面方向(GUI)第三方库有:PyQt5、wxPython、PyGObject
    • Python网站开发框架方向第三方库有:Django、Pyramid、Flask
    • Python文本处理方向第三方库有:NLTK、python-docx、PyPDF2
    • Python网络应用开发方向第三方库有:aip、MyQR、WeRobot
    • aip是百度的人工智能功能Python访问接口
    • Python人工智能方向第三方库有:TensorFlow、Scikit-learn、MXNet
    • Vizard是虚拟现实第三方库
    • pyovr是增强现实开发库
    • redis-py是redis数据的Python访问接口

    编程测试:

    • 系统基本信息获取:获取系统的递归深度、当前执行文件路径、系统最大UNICODE编码值等3个信息,并打印输出;输出格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
      RECLIMIT:<深度>, EXEPATH:<文件路径>, UNICODE:<最大编码值>‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮
      提示:请在sys标准库中寻找上述功能
    import sys
    print("RECLIMIT:{}, EXEPATH:{}, UNICODE:{}".format(sys.getrecursionlimit(), sys.executable, sys.maxunicode))
    
    • 二维数据表格输出:tabulate能够对二维数据进行表格输出,是Python优秀的第三方计算生态。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬编写程序,能够输出如下风格效果的表格数据
      输出效果
    data = [ ["北京理工大学", "985", 2000], \
             ["清华大学", "985", 3000], \
             ["大连理工大学", "985", 4000], \
             ["深圳大学", "211", 2000], \
             ["沈阳大学", "省本", 2000], \
        ]
    from tabulate import tabulate
    print(tabulate(data, tablefmt="grid"))
    

    期末测验

    *编程测试:

    • 无空隙回声输出:获得用户输入,去掉其中全部空格,将其他字符按收入顺序打印输出
    print(input().replace(" ",""))
    
    • 文件关键行数:关键行指一个文件中包含的不重复行。关键行数指一个文件中包含的不重复行的数量。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬统计附件文件中关键行的数量
    f = open("latex.log", "r", encoding="utf-8")
    d = {}
    for line in f:
        d[line] = d.get(line, 0) + 1
    print("共{}关键行".format(len(d)))
    
    #参考答案:如果需要"去重"功能,请使用集合类型
    f = open("latex.log")
    ls = f.readlines()
    s = set(ls)
    print("共{}关键行".format(len(s)))
    
    • 剩余两题与测验九重复,不重复记录
    展开全文
  • MATLAB教程(1) MATLAB 基础知识

    万次阅读 多人点赞 2017-10-26 20:57:32
    )标记是对每一个数据点用参数所给的标记形式进行表示。(例如’g:o’表示用‘o’连成一条绿色的线输出=.=我这个解释没谁了,讲不清楚还是上图吧…..) 这样的标记除了’o’,还有‘+’,‘*’等等。 这...

    初学。去年看过一点点MATLAB,很久不用,遗忘惊人。为了加深自己的印象,扎实基础,现将官网上的基础教程做简单的翻译。

    首先,以下从九个部分简单介绍基础入门知识。

    第一部分:MATLAB显示桌面的基本布局

    https://cn.mathworks.com/help/matlab/learn_matlab/desktop.html

    1.启动MATLAB后,桌面会显示默认布局,主要有以下三个部分:

    • 当前文件夹
    • 命令行窗口
    • 工作空间

    2.在MATLAB中一般需要创建变量和调用函数。

    直接在命令行中输入变量名以及其值即可(比如:a = 1),多个变量的创建同理,不再赘述。

    需要注意的是,如果没有定义输出变量,MATLAB会使用一个名为ans的变量来储存计算结果。

    这里写图片描述

    3.如果语句以分号结束,表示MATLAB内部会执行这一运算,但是命令行不对计算结果进行输出。

    第二部分:矩阵和数组

    https://cn.mathworks.com/help/matlab/learn_matlab/matrices-and-arrays.html

    大多数的编程语言一次性只能对一个数进行操作,而MATLAB主要被用来对整个矩阵或者数组进行操作。不管是什么类型的数据,所有的额MATLAB变量都是数组。矩阵是常用于线性代数的二维数组。

    1.数组的创建

    • 在一个单行中创建一个拥有四个元素的数组,其各个元素之间用逗号或者空格隔开。
      例如:
      a = [1 2 3 4]
      这种数组叫做单行矩阵(行向量)。
    • 创建一个多行矩阵,其各个行之间用分号隔开。
      例如:
      b = [1,2;3,4;5,6]
    • 还可以用函数来创建矩阵。
      例如:创建一个5行1列每一个元素都是0的列向量。
      z = zero(5,1)
      这里写图片描述

    2.矩阵和数组的操作

    • 在MATLAB中,允许用一个单一的运算或者函数对矩阵中所有的数据进行处理(操作)。

    例如:
    这里写图片描述

    • 如果要对矩阵进行转置,则使用单引号(‘)
      例如:a’
      这里写图片描述

    • 可以通过执行标准矩阵乘法,通过*运算符来计算内积。

    这是我自己的结果截图……很明显是不对滴~
    这里写图片描述

    然后下面是官网爸爸给的运行结果。
    这里写图片描述

    我们都知道,一个矩阵与它的逆矩阵相乘的结果的确应该等于单位矩阵。至于这里为什么不对,还希望各位大佬们能不吝赐教,大恩不言谢~

    这里要注意的是,p不是一个整数值矩阵,MATLAB存储数字是以浮点型存储的,真实值和它的浮点数在运算时有小小的不同,我们可以使用格式化命令,显示更多的小数位数。

    比如:
    format long
    p = a*inv(a)

    可以使用format short来重置到较短格式的使用。

    • x = a.*a用来表示对矩阵的每一个元素做平方操作。
      若需要对每一个元素做立方运算,则用x = a.^3(如图)

    这里写图片描述

    • 矩阵的扩充
      行方向上:A = [a,a]
      列方向上:A = [a; a]

      这里写图片描述

    • 复数
      复数由实部和虚部组成,它的虚部是-1的平方根。
      即sqrt(-1) = 0.0000 + 1.0000i
      一般用i或者j来代表复数的虚部部分。

    第三部分:数组的索引

    https://cn.mathworks.com/help/matlab/learn_matlab/array-indexing.html

    MATLAB中的每一个变量都是可以存储多个值的数组。如果想要使用数组中的某一个值,则需要用到索引。

    1.单个元素的索引

    从一个数组中索引某个元素一般有两种方法:
    第一种比较常见:数组名加要索引的元素所在的行和列,例如A(2,4) = 8。
    第二种不太常用:数组名加一个下标,该下标按列遍历。A(14) = 8。【这里不太好表达,上图吧~】

    这里写图片描述

    再多说一句,其实A(14)中的14表示按列数第14个元素!
    利用下标索引元素这种方式叫做线性索引
    注意:如果索引超出矩阵维度,MATLAB会报错。

    2.多个元素的索引
    引用数组的多个元素,使用冒号操作符m : n(m,n分别表示索引开始和结束的范围)

    例1索引第二列第1个元素到第3个元素。
    例2索引第三行全部元素

    这里写图片描述

    不难发现,索引行则将行数放在逗号前;索引列要将列数放在逗号后。

    另外,冒号运算符也可以帮助创建一组等距的矢量值,例如:
    B = 0:10:100
    —->B = 0 10 20 30 40 50 60 70 80 90 100
    输出一个从0到100步长为10的数组。

    第四部分:工作空间变量

    https://cn.mathworks.com/help/matlab/learn_matlab/workspace.html

    工作区包含你创建的变量或者从数据文件或其他程序导入到MATLAB中的变量。例如,我现在创建两个变量 :
    A = magic(4)
    B = rand(3,5,2)

    • 我们可以通过whos来看工作空间的内容。

    这里写图片描述

    • 工作区的变量在退出MATLAB后就不存在了。
      所以一般使用save myfile.mat命令来保存工作区变量以便以后使用。
      保存操作将当前工作文件夹中的工作区保存在一个压缩文件中,该文件的扩展名为.MAT,称为MAT文件。
    • 如果想要清空工作空间里的所有变量,则需使用clear命令
    • 使用load myfile.mat命令将MAT文件中的数据恢复到工作区

    第五部分:文本和字符

    https://cn.mathworks.com/help/matlab/learn_matlab/character-strings.html

    • 在处理文本时,将其中的字符序列用单引号括起来,可以将文本分配给变量。
      例如:myText = ‘Hello, world’;
    • 如果文本本身包括一个单引号,则在定义时使用两个单引号。
      例如:otherText = ‘You”re right’

    这里写图片描述

    同所有的MATLAB变量一样,上述创建的两个变量也都是数组,他们的数据类型是字符型。注意:字符数组也可以像数字数组那样用方括号括起来表示。

    • 要将数字转换成字符,就要用到函数。例如num2str()或者int2str()。

      这里写图片描述

    第六部分:函数调用

    https://cn.mathworks.com/help/matlab/learn_matlab/calling-functions.html

    MATLAB提供了大量函数来执行计算任务,函数相当于其他编程语言中的子程序或方法。
    例如求最大值的函数,max()。

    • 将输入参数用括号括起来,如果有多个参数,则将参数用逗号隔开。
      一般通过将函数值赋给某个变量这种方式来返回(输出)函数值,如果有多个输出参数,则需将它们用方括号括起来。
      例如:
      A = [1 3 5];
      [maxA,location] = max(A)

    这里写图片描述

    • 可以用单引号括住任何字符进行输入。
      例如:
      disp(‘hello world’)
      ===>输出 hello world

    disp()用来显示变量的内容,括号里可以是字符,结构体,矩阵等等,类似于c语言的printf()。


    • clc函数被用来清空命令行。

    第七部分:二、三维图

    https://cn.mathworks.com/help/matlab/learn_matlab/plots.html

    • 折线图

      (1) 画图

      x = 0:pi/1000:2*pi;
      y = sin(x);
      plot(x,y)

    这里x就用到了前面说到的索引。x表示0到2*pi之间步长为pi/100的值。
    二维图如下:

    这里写图片描述

    这里多说一下步长,步长决定了横轴取值的密集程度。下图是将步长改为pi/10之后的图像。

    这里写图片描述

    对比图中标记处不难发现,步长增大,图像的精确度变低,所以这里尽量保证步长足够小,使得x可以取到足够多的值

    (2) 坐标
    我们可以对横轴和纵轴分别命名,并对上述正弦图像加上标题。

    这里写图片描述

    (3)plot(x, y, ‘r–’)
    通过在图像函数中添加第三个输入参数,可以用红色虚线绘制与原来相同的变量。

    这里写图片描述

    其中第三个参数规定了线条的颜色、样式和标记的字符。(例如上例中的‘r–’表示红色虚线。)标记是指对每一个数据点用参数所给的标记形式进行表示。(例如’g:o’表示用‘o’连成一条绿色的线输出=.=我这个解释没谁了,讲不清楚还是上图吧…..)

    这里写图片描述

    这样的标记除了’o’,还有‘+’,‘*’等等。

    这时候你会发现,我们开始为第一个图定义的标题和标签不再显示在当前图形窗口中了。这是因为在默认情况下,重新调用一个绘图函数,MATLAB就会清除数据,重置轴和其他元素来准备新的绘图。
    若要将图添加到现有图形,使用hold命令即可。

    这里写图片描述

    在使用hold off或close the window命令之前,所有的图都会出现在当前的图形窗口中。

    • 3D图像

      3D图像通常用有两个参数的函数来定义一个曲面,z = f(x,y) 。
      对于z,首先使用meshgrid命令在函数定义域内创建若干(x,y)。

    这里写图片描述

    这里需要注意的是,在matlab中,.2代表0.2
    (-2:.2:2)表示在-2到2的区间上以0.2的长度为间隔的向量;

    当变量x是由向量、数组或隔开的点组成(如x=0:0.1:1)时,则后面有x变量的方程要加点 (.),例如:y=x.*exp(-x.*2)
    但是如果x是连续的变量,如syms x,则方程写成y=x*exp(-x*2)。

    • Subplots
      你可以用subplot函数在同一窗口的不同区域显示多个图像。
      subplots函数的前两个输入参数显示当前窗口每行每列的图像数量,第三个输入参数指定活动区域。例如,在图形窗口创建四个区域来分别输出图像。

    这里写图片描述

    mesh()生成由X,Y和Z指定的网线面,由C指定的颜色的三维网格图。

    第八部分:程序和脚本

    https://cn.mathworks.com/help/matlab/learn_matlab/scripts.html

    • 示例脚本(从均匀分布中生成随机数据并计算平均值。绘制数据和平均值。)
      用edit命令来创建脚本:
      edit plotrand
      这样就打开了一个叫plotrand.m的空文件,输入产生随机数向量的代码:
    n = 50;
    r = rand(n,1);
    plot(r)
    

    然后,添加代码在图中绘制水平线:

    m = mean(r);
    hold on
    plot([0,n],[m,m])
    hold off
    title('Mean of Random Uniform Data')
    

    在写代码过程中,可用(%)在代码之间添加注释。
    最后保存脚本,在命令行窗口输入plotrand运行脚本。

    这里写图片描述

    • 循环和条件语句
      在脚本中,可以循环使用部分代码,并且通过使用(for,while,if,switch等关键字)来执行这部分代码。
      例如,创建一个叫calcmean.m的脚本,利用for循环计算五个随机样本的平均数和总平均数。
    nsamples = 5;
    npoints = 50;
    
    for k = 1:nsamples
        currentData = rand(npoints,1);
        sampleMean(k) = mean(currentData);
    end
    overallMean = mean(sampleMean)

    现在,修改for循环,以便每次迭代时都可以查看结果。在运行脚本时,会先显示中间结果,再计算总体均值。

    for k = 1:nsamples
       iterationString = ['Iteration #',int2str(k)];
       disp(iterationString)
       currentData = rand(npoints,1);
       sampleMean(k) = mean(currentData)
    end
    overallMean = mean(sampleMean)
    
    calcmean

    在编辑器中,在calcmean.m的最后添加条件语句,使它根据不同的总体均值返回不同的信息。

    if overallMean < .49
       disp('Mean is less than expected')
    elseif overallMean > .51
       disp('Mean is greater than expected')
    else
       disp('Mean is within the expected range')
    end
    • 脚本位置
      MATLAB中,要运行脚本,文件必须位于当前文件夹或搜索路径中的文件夹中。
      默认情况下,MATLAB安装程序创建的MATLAB文件夹位于搜索路径上。如果要在另一个文件夹中存储和运行程序,需要将其添加到搜索路径中:在当前文件夹浏览器中选择文件夹,右键单击,然后选择“添加到路径”。

    第九部分:帮助和文档

    https://cn.mathworks.com/help/matlab/learn_matlab/help.html

    • 使用doc命令在单独的窗口中打开函数文档。

      doc mean

    • 键入左圆括号后暂停,MATLAB在命令窗口中就会显示函数提示(函数文档的语法部分)。

      mean(

    • 使用帮助命令后,在命令窗口中查看函数的简单用法概括。

      help mean

    以上就是MATLAB的基础入门知识,欢迎指正呦~

    展开全文
  • 【stata】基础指令——学习教程全记录(01)

    万次阅读 多人点赞 2019-02-09 11:00:07
    开一文记录和总结stata的学习,不断更新中~ 拿到一个数据集,首先要全局了解一下这个数据集的情况: 【describe】查看这个数据集的简要介绍,包括了样本数量(obs...【describe,short】:只看整个数据集的总体概况,...
  • 什么是事务?2.事务的基本操作2.事务操作的注意事项3.事务的隔离级别3.1 无隔离性的问题3.1.1 脏读3.1.2 不可重复读3.1.3 幻读3.2 事务的隔离级别3.2.1 设置事务的隔离级别3.2.2 查看当前的隔离级别4.事务的特性4.1 ...
  • 智慧校园的是以物联网为基础的智慧化的校园工作、学习和生活一体化环境,这个一体化环境以各种应用服务系统为载体,将教学、科研、管理和校园生活进行充分融合。2018年6月7日,国家标准《智慧校园总体框架》发布。
  • 遗传算法(一) 遗传算法的基本原理

    千次阅读 多人点赞 2020-02-03 22:25:13
    遗传算法(一)遗传算法的基本原理 1.概述 遗传算法(Genetic ... 在进行 X 次迭代之后,总体没有什么太大改变。 2. 我们事先为算法定义好了进化的次数。 3. 当我们的适应度函数已经达到了预先定义的值。
  • 国家电子政务总体框架的构成包括:服务与应用系统、信息资源、基础设施、法律法规与标准化体系、管理体制。
  • 总体样本方差的无偏估计样本方差为什么除以n-1

    万次阅读 多人点赞 2018-08-01 15:02:22
    样本是总体样本中随机抽取一系列个体组成的集合,它是总体样本的一部分。 应该把样本和总体样本一样进行抽象化理解,因此样本也存在期望和方差。 这里有一个重要的假设,就是随机选取的样本与总体样本同分布,它...
  • 软件工程——总体设计与详细设计

    千次阅读 2020-05-14 11:12:37
    需求分析确定了系统的开发目标,下一步工作就是软件设计。软件设计可以进一步地 分为两个阶段:总体设计和详细设计。
  • 简言之,多阶段决策过程是这样的一类特殊的活动过程:问题可以按时间顺序分解成若干相互联系的阶段,在每一个阶段都要做出决策,全部过程的决策是一个决策序列。 下面举例说明什么是多阶段决策问题。 例1(最短...
  • 软件工程导论—总体设计

    千次阅读 多人点赞 2020-05-08 16:21:53
    Mitch Kapor曾经就软件设计发表过宣言:“什么是设计?设计是你站在两个世界——技术世界和人类的目标世界,而你尝试将这两个世界结合在一起……”。 文章目录 1. 设计过程 1.1. 软件设计简述 1.2. 设计过程 2. 设计...
  • 用样本估计总体

    千次阅读 2019-07-04 09:59:07
    总体、个体、样本 总体是在进行统计分析时,研究对象的全部; 个体是组成总体的每个研究对象; 样本是从总体X中按一定的规则抽出的个体的全部,用X1,X2,…,XnX_1,X_2,…,X_nX1​,X2​,…,Xn​表示; 样本中...
  • 系统总体结构设计

    千次阅读 2020-02-16 04:25:08
    总体设计主要是在系统分析的基础上,对整个系统的划分(子系统)、机器设备(包括软、硬设备)的配置、数据的存贮规律以及整个系统实现规划等方面进行合理的安排。 一、系统设计的任务 1. 系统设计的概念 系统...
  • 文章目录1、类加载和实例化2、Java是值传递还是引用传递3、类加载的主要过程4、什么是GC5、简述垃圾回收过程6、内存泄漏7、导致内存泄漏的场景8、Java中堆和栈的区别9、ArrayList、LinkedList、Vector的区别10、...
  • 软件工程:总体设计

    千次阅读 2020-10-21 21:31:47
    总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题,因此,总体设计又称为概要设计或初步设计。 总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,...
  • 【统计学】从样本到总体

    千次阅读 2018-10-22 14:38:56
    总体和样本均值的符号:  n = 样本容量  u = 总体均值  x = 样本均值  σ = 总体标准差  s = 样本标准差   样本均值分布的特征:对于任何样本均值的分布: 样本容量越大,样本均值的分布越接近正态分布 ...
  • 总体统计量的估计方法

    千次阅读 2019-06-26 09:56:00
    总体统计量的估计方法 1 点估计量法 可以用点估计量来估计总体的均值、方差或一定比例的精确值。但是无法可定估计完全正确,只是对总体做出假设。 1.1 通过样本估算总体均值 符号定义: $\mu$:总体均值。 $...
  • 对于图书馆主要负责提供的功能是从图书的购入开始直到该图书过期下架的整个流通过程,这其中包括图书入库、借出、归还以及对参与此流通过程的读者的信息管理 。 (1) 新图书信息入库:建立图书信息库,以便读者...
  • 主成分分析

    万次阅读 多人点赞 2014-03-12 10:07:24
    系统评估是对系统营运状态做出评估,而评估一个系统的营运状态往往需要综合考察许多营运变量,例如对某一类企业的经济效益作评估,影响经济效益的变量很多,很难直接比较其优劣,所以解决评估问题的焦点是希望客观...
  • 编译程序总体结构

    千次阅读 2019-10-25 23:53:30
    编译程序总体结构 文章目录编译程序总体结构1、词法分析2、语法分析3、语义分析4、中间代码生成4、中间代码生成5、代码优化与机器无关的优化与机器有关的优化6、目标代码生成7、表格管理8、错误处理9、模块分类 1、...
  • 总体架构模块图 1.1 抽象架构模块图       1.2 具体技术架构模块图   如上图示所,框架主要包括了: l MVC开发框架 l 工作流技术 l 用户、权限、角色管理 下面分别详细介绍。 2 MVC方案 ...
  • u分布:标准正态分布,是以0为平均值,以1为标准差的正态分布 z分布:泛指正态分布,是以u为平均值,以西格玛为标准差的正态分布。对于z分布中的所有变量X,转换为(X-U)/西格玛时,其服从u分布。即标准正态分布...
  • 如何判断建设用地是否符合土地利用总体规划? 在国土资源工作中,经常遇到需要判断建设用地是否符合土地利用总体规划,即需要判定土地用途和土地利用总体规划规定的用途是否一致。 在进行规划符合性审查时,一般...
  • 参数检验(parameter test)全称参数假设检验,是对参数平均值、方差进行的统计检验。参数检验是推断统计的重要组成部分。当总体分布已知(如总体为正态分布),根据样本数据对总体分布的统计参数进行推断。 先由...
  • 第5章 总体设计  5.1 设计过程  5.2 设计原理  5.3 启发规则  5.4 描绘软件结构的图形工具  5.5 面向数据流的设计方法  5.6小结及作业 总体设计(概要设计或初步设计)的基本目的就是回答“概括...
  • 首先,基于对课题的需求的仔细分析和探讨,提出了手指静脉识别系统的总体设计方案,并确定了设计方案的可行性。在此基础上分析并设计了系统的采集装置,包括近红外成像系统、光源系统和上位机的设计。 其次,为了...
  • 就是用样本统计量作为总体参数的估计,比如用样本均值/方差作为总体均值/方差的估计 区间估计(Interval Estimate) 在点估计的基础上,在一定的置信水平下,给样本统计量加上一个区间范围作为总体参数的取值范围,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 166,001
精华内容 66,400
关键字:

总体指什么