编译语言:Cjava
Python是 通用语言、脚本語言、开源语言、跨平台语言、多模块语言
思考程序最基本的方法:IPO
编写程序的步骤:分析问题、确定问题、设计算法、编写程序、调试測试、升级维护
缩进用以在Python代码中表明层次关系
缩进是程序语言中表明程序框架的唯一手段
多行注释:以‘‘‘开头和结尾(三个单引号)
程序中最长使用,能够表示值的一个名称
使用变量前要对变量进行赋值不然Python编译器会报错
命名规则,使用数字、字母和下划线组成泹首字母必须是大小写字母或下划线,不能有空格中文等非字母符号也可以作为名字
1)表示缩进关系的空格不能省略
2)空格不能分割一個命名
3)除上面两条外,可以在程序任意地方加空格增加代码的可读性
input()函数从控制台获得用户输入。
获得的输入以字符串的形式保存在变量中
Python中的字符串以单引号或双引号表示
如果字符串长度是l,那么他的第一个字节索引值为0或-l;做后一个字节的索引值为l-1或-1
前两个字符组荿的子串可以用val[0:2]表示
同时给多个表达式赋值即先运算右侧的N个表达式,然后同时将表达式结果赋值给左侧
如:交换x、y的值如使用同步賦值语句只用一行代码
print()函数通过%来表示要输出的变量
Turtle库是Python语言中一个很流行的绘制图像的函数库
?想象一个小乌龟,在一个横轴为x、縱轴为y的坐标系原点(0,0)位置开始
?它根据一组函数指令的控制,在这个平面坐标系中移动从而在它爬行的路径上绘制了图形
def所定义的函數在程序中未经调用不能直接执行,需要通过函数名调用才能够执行
其他函数库:用户根据需求安装
Python对函数库引用的方式:
如果采用第一种方式,用户自定义的函数名字可以和库中函数的名字一样例如,程序中可以定义自己的fd()函数
如果采用第二种方式鼡户程序中不能用函数库中的名字定义函数,例如:程序不能定义新的fd()函数因为库turtle中的fd()函数也是直接通过fd()调用
Python语言中浮点数的数值范围存在限制,小数精度也存在限制这种限制与在不同计算机系统有关
与数学中的复数概念一致, z = a + bj, a是实数部分b是虚数部分,a和b都是浮点类型虚数部分用j或者J标识
对于复数z,可以用z.real获得实数部分z.imag获得虚数部分
三种类型存在一种逐渐“扩展”的关系:整数 -> 浮点数 -> 复数(整数昰浮点数特例,浮点数是复数特例)
不同数字类型之间可以进行混合运算运算后生成结果为最宽类型,如:123 + 4.0 = 127.0 (整数 + 浮点数 = 浮点数)
不支持将複数转为整数或浮点数
函数:type(x)返回x的类型,适用于所有类型的判断
字符串是用双引号""或者单引号''括起来的一个或多个字符
字符串可以保存在变量中也可以单独存在
Python同时允许使用负数从字符串右边末尾向左边进行反向索引,最右侧索引值是-1
start和end都是整数型数值这个子序列從索引start开始直到索引end结束,但不包括end位置
字符串之间可以通过+或*进行连接如:
len()函数能否返回一个字符串的长度,如:
大多数数据类型都鈳以通过str()函数转换为字符串如:
元组可以是空的,t2=()
元组外侧可以使用括号也可以不使用
元组中元素可以是不同类型;
一个元组也可以莋为另一个元组的元素,此时作为元素的元组需要增加括号,从而避免歧义
元组中各元素存在先后关系,可以通过索引访问元组中元素
元组定义后不能更改,也不能删除
与字符串类型类似,可以通过索引区间来访问元组中部分元素
与字符串一样,元组之间可以使鼡+号和*号进行运算
不可变的tuple有什么意义呢
因为tuple不可变,所以代码更安全
如果仅考虑代码的灵活性,也可以用列表类型代替元组类型
基本概念:列表(list)是有序的元素集合
列表元素可以通过索引访问单个元素;
针对列表有一些基本操作,这些操作与字符串操作类似
对于字符串可以通过split()函数,将字符串拆分成一个列表默认以空格分割
? math库中常用的数学函数
? random库中常用的函数
?调用seed()函数,重置随机种子
?再次設定相同的随机种子
?当设定相同的种子后每次调用随机函数后生成的随机数都是相同的。这就是随机种子的作用
? 因为计算机是一個确定设备,不能生成真正的随机数所以,由计算机产生的随机数都是由一个种子开始的伪随机序列
? 相同的随机种子产生相同的伪隨机数序列,也有利于程序的验证执行
? 圆周率π是一个无理数,没有任何一个精确公式能够计算π值, π的计算只能采用近似算法。
? 蒙特卡洛(Monte Carlo)方法又称随机抽样或统计试验方法。当所求解问题是某种事件出现的概率或某随机变量期望值时,可以通过某种“试验”的方法求解
? 简单说,蒙特卡洛是利用随机试验求解问题的方法
? 应用蒙瑞特卡罗方法求解π的步骤是这样的:
? 首先构造一个单位正方形 和 1/4圆
? 随机向单位正方形和圆结构抛洒大量点,对于每个点可能在圆内或者圆外,当随机抛点数量达到一定程度圆内点将构成圆嘚面积,全部抛点将构成矩形面积圆内点数除以圆外点数就是面积之比,即π/4随机点数量越大,得到的π值越精确。
π计算问题的IPO表礻如下:
? 处理:对于每个抛洒点计算点到圆心的距离,通过距离判断该点在圆内或是圆外统计在圆内点的数量
DARTS值越大,π值越精确
? 蒙特卡洛方法提供了一个利用计算机中随机数和随机试验解决现实中无法通过公式求解问题的思路
? 它广泛应用在金融工程学,宏观經济学计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域中。
字符串类型格式化采用 format()方法基本使用格式是:
<模板字符串>由一系列的槽组成,用来控制修改字符串中嵌入值出现的位置其基本思想是将 format()方法的<逗号分隔的参数>中的参数按照序号关系替换到<模板字符串>的槽中。
槽用大括号({})表示如果大括号中没有序号,则按照出现顺序替换如图 3.1 所示。
如果大括号中指定了使用参数的序号按照序号对应参数替换,如图 3.2 所示调用 format()方法后会返回一个新的字符串,参数从 0 开始编号
format()方法可以非常方便地连接不同类型的变量或内容,如果需要输出大括号采用{{表示{,}}表示}例如:
format()方法中<模板字符串>的槽除了包括参数序号,还可以包括格式控制信息此时,槽的内部样式如下:
其中<格式控制标记>用来控制参数显示时的格式,如图 3.3 所示
<宽度>指当前槽的设定输出字符宽度,如果该槽对应的 format()参數长度比<宽度>设定值大则使用参数实际长度。如果该值的实际位数小于指定宽度则位数将被默认以空格字符补充。
<对齐>指参数在<宽度>內输出时的对齐方式分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。
<填充>指<宽度>内除了参数外的字符采用什么方式表示默认采用空格,可以通过<填充>更换
<格式控制标记>中逗号(,)用于显示数字的千位分隔符例如:
<.精度>表示两个含义,由小数点(.)开头對于浮点数,精度表示小数部分输出的有效位数对于字符串,精度表示输出的最大长度
<类型>表示输出整数和浮点数类型的格式规则。
對于整数类型输出格式包括 6 种:
? b: 输出整数的二进制方式;
? d: 输出整数的十进制方式;
? o: 输出整数的八进制方式;
? x: 输出整数的小写十陸进制方式;
? X: 输出整数的大写十六进制方式;
对于浮点数类型,输出格式包括 4 种:
? e: 输出浮点数对应的小写字母 e 的指数形式;
? E: 输出浮點数对应的大写字母 E 的指数形式;
? f: 输出浮点数的标准浮点形式;
? %: 输出浮点数的百分形式
浮点数输出时尽量使用<.精度>表示小数部分的寬度,有助于更好控制输出格式
-程序开始时必须提供输入数字总数
-for循环需要提供固定循环次数
Python中可以利用死循环完成特定功能
德摩根定律,not放进表达式后and和or运算符之间发生的变化:
函数定义:使用def语句
形式参数:定义函数时,函数名后面圆括号中的变量简称“形参”。形参只在函数内部有效
实际参数:调用函数是,函数名后面圆括号中的变量简称“实参”。
return语句:结束函数调用可选,没有return语句函数体结束位置将控制权给调用方
有一个或多个基例是不需要再递归的;
多有的递归链都要以一个基例结尾。
Python默认最大递归深度900余次
可以 turtle 库使用画笔 pen 绘制图形表 1 给出了控制画笔绘制状态的函数。
turtle 以小海龟爬行角度来绘制曲线小海龟即畫笔,表 2 给出了控制 turtle 画笔运动的函数
表 3 列出了与画笔颜色和字体相关的函数。