Python蓝桥等考九级之六:阶段总结


  数据类型及类型转换

 

 

数据类型

字面值

转换函数

数值类型

整数

-3,-1,0,10,15

int(x):x可以是除复数外的数值类型及只含数字0-9的字符串。

浮点数

1.23,1.0,1.,0.2,.2

float(x):x可以是除复数外的数值类型及只含数字0-9和小数点的字符串。

布尔类型

True 和False

bool(x):x可以是任意类型和对象,但一般只用于数值类型及“True”和“False”字符串的转换。数值类型的0、0.0、False、0+0j和字符串“False”是False外,其它都是True。

复数

2j,1+2j,1+0j

conplex(x)目前未要求掌握

字符串类型

"ggtt",'t55',

'''first line

second line'''

"""first line

second line"""

str(x):x可以把数值类型,它被转换为相应的字符串。

 

 

 

  算术运算符

 

运算符

名称

概述

+

数值型操作数1(+,-,*)数值型操作数2=数值型结果:布尔类型可以认为只有1和0值的整数类型,当两个操作数都是整数类型,结果是整数类型,否则是浮点数类型。+(加)可以用于字符串连接(concat),字符串1+字符串2=字符串3。*(乘)可以用于字符串复制,字符串*整数n或整数n*字符串,相当于整数n个字符串相加。

-

*

/

除法的结果一定是浮点数,即使两个操作数都是整数。

**

乘方

只有第一操作数是整数,第二操作数是非负整数,结果才是整数,否则是浮点数。

//

整除

整除商、除数、余数和被除数的关系:整除商*除数+余数=被除数,并不限于整数。两个操作数都是整数的情况整除商和余数才是整数,否则是浮点数。

%

取余数

优先级

第一级:**,第二级:*、/、//、%,第三级:+,-。有括号先括号,同级乘方(**)从右到左,其它从左到右。

 

  赋值运算符

 

类别

描述

简单赋值

等号(=)左边是一个变量,右边是一个值或已经赋值的变量,例如:

a = 1(左边是变量,右边是值);

b=a(左边是变量,右边是已赋值的变量)。

连续赋值

等号(=)左边是以逗号(,)多个变量,右边是以逗号分隔的同样多个值或已经赋值的变量,例如:

a, b = 1, 2;

b, c=a, 100。

 

  比较运算符

  比较运算符比较两个数据的大小,结果是布尔数据类型,即True或False。以两个整数 a, b = 5, 7为例,说明它们的运算规律。

运行符

功能描述

运算式

运算结果

>

大于

a > b

False

<

小于

a < b

True

>=

大于等于

a >= b

False

<=

小于等于

a <= b

True

==

等于

a == b

False

!=

不等于

a != b

True

  假设a和b是精确度c的两个浮点数(例如 a, b, c = 1.23, 2.34, 0.01),那么它们可以按下面的表格进行比较运算。

对应运算符

功能描述

实现方法

>

大于

a>b+c/10

<

小于

a<b-c/10

>=

大于等于

a>b-c/10

<=

小于等于

b<b+c/10

==

等于

a>b-c/10 and a<b+c/10

!=

不等于

a<b-c/10 or a>b+c/10

  记不住的话可以按下面的方法比较运算:

int(a/c)  比较运算符  int(b/c)。

 

  逻辑运算符

  比较运算符的操作数是一些可比较的数据(例如整数),而逻辑运算符的操作数一定是布尔型数值或可以用bool()转为布尔型的数据。“与”、“或”、“异或”(不在该级等考内容)和“非”四个逻辑运算。

运算符

描述

说明

and

当两个操作数都为True时,结果才是True,否则是False。支持熔断,即首操作数为False时,不检查第二操作数,直接得到结果False。

True and True = True,

True and False = False,

False and True = False(熔断),

False and False = False(熔断)。

or

当两个操作数都为False时,结果才是False,否则是True。支持熔断,即首操作数为True时,不检查第二操作数,直接得到结果True。

True or True = True(熔断),

True or False = True(熔断),

False or True = True,

False or False = False。

^

异或

当两个操作数不同时为True,否则为False。

not

只有一个操作数(单目运算符):

not True = False,

not False = True。

  当没有括号的情况下,哪个运算符的优先级高呢?

1)True or True and False = True

2)False and True ^ True = False

 

分析,(1)如果and的优先级不高于or,结果必为False,所以and优先级高于or;(2)如果^的优先级不高于and,结果必为True,所以^的优先级高于and;(3)not是单目操作符,优先级比双目运算符高,得到以下优先级:

() > not > ^ > and > or。

练习:判断下面逻辑算式的值,然后用Python验证:

    (1)True or False and False

    (2)False and True ^ False

    (3)True or True and False

    (4)False and True or False

    (5)False or True and True

    (6)False ^ False or False

  记不清它们的优先级怎么办——加括号,例如:

(True or True) and False = False,

(False and True) ^ True = True。

 

  输入输出内置函数

  内置函数是可以直接使用的函数。与计算机交互,离不开输入函数input()和输出函数print()。

  input()函数有两种调用方式:不含提示字符串参数input()和含提示字符串参加input("提示字符串")。

  print()函数情况有点复杂,用下面的表格说明。

 

无尾

有尾

单参数

print(x):打印x后换行。

>>>print(123)

123

>>>

 

>>>print("abc")

abc

>>>

print(x, end="?"):打印x后不换行,取而代之是打印end字符串。

>>> print(123, end="__end__")

123__end__>>>

 

>>> print("abc", end="__end__")

abc__end__>>>

多参数

print(x1, x2, x3, ...):打印x1后至少空一格再打印x2,如此类推,最后换行。

>>> print(123, "abc", 456.7)

123 abc 456.7

>>>

print(x1, x2, x3, ..., end="?"):打印x1后至少空一格再打印x2,如此类推,最后不换行,取而代之是打印end字符串。

>>> print(123, "abc", 456.7, end="__end__")

123 abc 456.7__end__>>>

 

  数据占位式格式化构建字符串

  input()中的提示字符串和print()中的字符串参数都可以采用格式化构建。语法格式:

数据个数

语法(***占位符所在位置)

单数据

1)"在这里***占个位。" % d

2)'在这里***占个位。' % d

注:d是数据或算式,如果d是算式,那么要在算式外,加上括号,例如:

"在这里***占个位。" % (1+2)。

多数据

1)"在这里***占第一个位,这里***占第二个位。" % (d1, d2)

2)'在这里***占第一个位,这里***占第二个位。' % (d1, d2)

注:d1、d2是数据或算式。

 

  整数

  整数占位符是“%d”,例如下面的例子:

“%”与“d”之间可以有数字、小数点和正负号,各种数据的格式功能如下表(m是非负数、n是非零正整数):

占位符

格式功能描述

例子

%d

按整数的实际长度打印。

>>> s = "abc%d" % 123

>>> print(s)

abc123

>>> s = "abc%d" % 12345678

>>> print(s)

abc12345678

%nd

%n.d

如果整数不小于n位,按整数的实际长度打印,否则在前补足空格。

>>> s = "abc%6d" % 123

>>> print(s)

abc   123

>>> s = "abc%6d" % 12345678

>>> print(s)

abc12345678

(其它占位符自行测试)

%-nd

%-n.d

如果整数不小于n位,按整数的实际长度打印,否则在后补足空格。

>>> s = "abc%-6ddef" % 123

>>> print(s)

abc123   def

>>> s = "abc%-6ddef" % 12345678

>>> print(s)

abc12345678def

(其它占位符自行测试)

%0nd

%.nd

%m.nd

注:0≤m≤n。

如果整数不小于n位,按整数的实际长度打印,否则在前补足0。除了%-0nd与%-nd相同外,其它在前加负号不影响格式。

>>> s = "abc%06ddef" % 123

>>> print(s)

abc000123def

>>> s = "abc%-06ddef" % 123

>>> print(s)

abc123   def

>>> s = "abc%06ddef" % 12345678

>>> print(s)

abc12345678def

>>> s = "abc%-06ddef" % 12345678

>>> print(s)

abc12345678def

(其它占位符自行测试)

%m.nd

注:m>n。

如果整数不小于m位,按整数的实际长度打印;否则,如果整数不小于n位,按整数的实际长度打印,否则在前补足0至n 位,然后再在前补足空格使总长度达到m。

>>> s = "abc%10.6ddef" % 123

>>> print(s)

abc    000123def

>>> s = "abc%10.6ddef" % 12345678

>>> print(s)

abc  12345678def

>>> s = "abc%-10.6ddef" % 123

>>> print(s)

abc000123    def

>>> s = "abc%-10.6ddef" % 12345678

>>> print(s)

abc12345678  def

>>> s = "abc%6.5ddef" % 12345678

>>> print(s)

abc12345678def

%+*d

如果数据为正数则显示正号(+)。注:* 表示原格式数字。

>>> s = "abc%+ddef" % 123

>>> print(s)

abc+123def

>>> s = "abc%+6ddef" % 123

>>> print(s)

abc   +123def

(其它占位符自行测试)

 

  浮点数

  浮点数占位符是“%f”,例如下面的例子:

 

“%”与“f”之间可以有数字、小数点和正负号,各种数据的格式功能如下表(m、n是非零正整数):

占位符

格式功能描述

例子

%f

按浮点数的默认长度(小数点后六位,不够补0,超过四舍五入)打印。

>>> s = "abc%f" % 1.23

>>> print(s)

abc1.230000

>>> s = "abc%f" % 1.2345678

>>> print(s)

abc1.234568

%nf

如果浮点数的总长度(六位小数+小数点+整数部分)不小于n位,按浮点数的总长度打印,否则在前补足空格。

>>> s = "abc%10f" % 1.23

>>> print(s)

abc  1.230000

>>> s = "abc%10f" % 12345.678

>>> print(s)

abc12345.678000

%-nf

如果浮点数的总长度(六位小数+小数点+整数部分)不小于n位,按浮点数的总长度打印,否则在后补足空格。

>>> s = "abc%-10fdef" % 1.23

>>> print(s)

abc1.230000  def

>>> s = "abc%-10fdef" % 12345.678

>>> print(s)

abc12345.678000def

%0nf

 

如果浮点数的总长度(六位小数+小数点+整数部分)不小于n位,按浮点数的总长度打印,否则在前补足0。注:%-0nf与%-nf相同。

>>> s = "abc%010fdef" % 1.23

>>> print(s)

abc001.230000def

>>> s = "abc%-010fdef" % 1.23

>>> print(s)

abc1.230000  def

>>> s = "abc%010fdef" % 12345.678

>>> print(s)

abc12345.678000def

>>> s = "abc%-010fdef" % 12345.678

>>> print(s)

abc12345.678000def

%m.f

四舍五入到整数,如果该整数不小于m位,按该整数的实际长度打印,否则在前补足空格。

>>> s = "abc%10.fdef" % 12345.678

>>> print(s)

abc12346     def

>>> s = "abc%4.fdef" % 12345.678

>>> print(s)

abc12346def

 

%-m.f

四舍五入到整数,如果该整数不小于m位,按该整数的实际长度打印,否则在后补足空格。

>>> s = "abc%-10.fdef" % 12345.678

>>> print(s)

abc     12346def

>>> s = "abc%-4.fdef" % 12345.678

>>> print(s)

abc12346def

%.nf

%-.nf

四舍五入到小数点后n位,不够位补0。

>>> s = "abc%.2fdef" % 1.2345678

>>> print(s)

abc1.23def

>>> s = "abc%.5fdef" % 12345.678

>>> print(s)

abc12345.67800def

(自行测试%-.nf。)

 

 

 

%m.nf

四舍五入到小数点后n位,不够位补0。所得的小数总位数如果不小于m位,按该小数的实际长度打印,否则在前补足空格使总长度达到m。

>>> s = "abc%10.2fdef" % 1.2345678

>>> print(s)

abc      1.23def

>>> s = "abc%10.5fdef" % 12345.678

>>> print(s)

abc12345.67800def

 

%-m.nf

四舍五入到小数点后n位,不够位补0。所得的小数总位数如果不小于m位,按该小数的实际长度打印,否则在补足空格使总长度达到m。

>>> s = "abc%-10.2fdef" % 1.2345678

>>> print(s)

abc1.23      def

>>> s = "abc%-10.5fdef" % 12345.678

>>> print(s)

abc12345.67800def

%0m.nf

四舍五入到小数点后n位,不够位补0。所得的小数总位数如果不小于m位,按该小数的实际长度打印,否则在前补足0使总长度达到m。%-0m.nf与%-m.nf相同。

>>> s = "abc%010.2fdef" % 1.2345678

>>> print(s)

abc0000001.23def

>>> s = "abc%010.5fdef" % 12345.678

>>> print(s)

abc12345.67800def

(自行测试%-0m.nf。)

%+*f

如果数据为正数则显示正号(+)。注:* 表示原格式数字。

>>> s = "abc%+fdef" % 1.23

>>> print(s)

abc+1.230000def

>>>s = "abc%+010.2fdef"%1.2345678

>>> print(s)

abc+000001.23def

(其它占位符自行测试)

 

  字符串

  字符串的占位符是“%s”,例如下面的例子:

 

“%”与“s”之间可以有数字、小数点和负号(正号会被忽略,不起任何作用),各种数据的格式功能如下表(m、n是非零正整数):

占位符

格式功能描述

例子

%s

按字符串实际长度打印。

>>> s = "abc%sdef" % "ABCDE"

>>> print(s)

abcABCDEdef

%ms

如果字符串的实际长度不小于m,按实际长度打印,否则在前补充空格到m。

>>> s = "abc%3sdef" % "ABCDE"

>>> print(s)

abcABCDEdef

>>> s = "abc%10sdef" % "ABCDE"

>>> print(s)

abc     ABCDEdef

%-ms

如果字符串的实际长度不小于m,按实际长度打印,否则在补充空格到m。

>>> s = "abc%-3sdef" % "ABCDE"

>>> print(s)

abcABCDEdef

>>> s = "abc%-10sdef" % "ABCDE"

>>> print(s)

abcABCDE     def

% .ns

如果字符串的长度超过n,则从头开始截取n个字符。%-.ns与%.ns一样。

>>> s = "abc%.3sdef" % "ABCDE"

>>> print(s)

abcABCdef

>>> s = "abc%.10sdef" % "ABCDE"

>>> print(s)

abcABCDEdef

>>> s = "abc%-.3sdef" % "ABCDE"

>>> print(s)

abcABCdef

%m.ns

如果字符串的长度超过n,则从头开始截取n个字符。如果所得的字符串的实际长度不小于m,按实际长度打印,否则在前补充空格到m。

>>> s = "abc%10.3sdef" % "ABCDE"

>>> print(s)

abc       ABCdef

>>> s = "abc%3.4sdef" % "ABCDE"

>>> print(s)

abcABCDdef

%-m.ns

如果字符串的长度超过n,则从头开始截取n个字符。如果所得的字符串的实际长度不小于m,按实际长度打印,否则在补充空格到m。

>>>s = "abc%-10.3sdef" % "ABCDE"

>>>print(s)

abcABC       def

>>> s = "abc%-3.4sdef" % "ABCDE"

>>> print(s)

abcABCDdef

 

  ASCII码与chr()/ord()内置函数

 

  32到126是可见字符,其它是控制字符(不可见)。数字和英文字母也是按顺序编码的,因此我们只需记住下面的表就可以计算其它数字和英文字母的ASCII码了。

0aA的ASCII码表(需记住

 

  chr()函数把ASCII编码变为字符,例如chr(97)='a';ord()函数求取ASCII编码,例如ord("A")=65。无需知道编码直接转大小写的方法:把小写y变为大写Y:

chr(ord("A")+ord("y")-ord("a"))。

 

  单行注释与多行文档

  以#开头是单行注释,三对引号('''内容''' 或 """内容""")是文档(可以多行),可作为多行注释。

 

  值、变量、赋值运算符、id()/type()内置函数

  Python为程序在运行中,都为确定的值分配唯一一个确定的内存空间,因此在程序运行过程中,这个空间的地址(一个正整数)是不变的。为了使用方便,Python引入了变量,所谓变量就是值的地址字符索引——变量名称。变量名称需要符合一定的规范:由大小写英文字符和下划线构成,开头字母不能是数字。

  值也叫数据,是有数据类型的,当变量与值建立索引时,变量与值有同样的数据类型。值与变量建立索引的过程就是赋值,如下图。

 

  id()内置函数返回值或已赋值的变量的数据内存地址;type()则是返回数据类型。

 

  连续赋值和变量交换

  我们把赋值号左边是逗号分隔的多个变量,右边是同样多个的值和已赋值变量,这种方式是连续赋值。

  两个变量交换的方法有两个:第三变量法和连续赋值法。

 

  随机库函数randint()

 

 

 

  与内置函数不同,使用前需要import。与其他边界条件不一样,函数参数是闭区间,即>=start and <=end。

 

 

  浮点数比较运算

  假设a和b是精确度c的两个小数,那么它们可以按下面的表格进行比较运算。

对应运算符

功能描述

实现方法

>

大于

a>b+c/10

<

小于

a<b-c/10

>=

大于等于

a>b-c/10

<=

小于等于

b<b+c/10

==

等于

a>b-c/10 and a<b+c/10

!=

不等于

a<b-c/10 or a>b+c/10

  如果怕太麻烦或担心弄错,就转为整数后再进行比较运算:

int(a/c)  比较运算符  int(b/c)。

 

  if条件语句 

 

  例子:

 

 

  for循环语句

  适用于循环次数确定的情况。

 

 

 

 

  while循环语句

 

 

  嵌套

  当“语句块”的地方用上了if或循环语句,就称作嵌套了。

 

  continue/break在循环语句中的作用

   continue终止当次循环,进入下一次循环,如果是嵌套的循环中的continue,只终止嵌套的当次循环,外层循环不受影响;break终止循环,如果是嵌套的循环中的break,只终止嵌套的循环,外层循环不受影响。

  

  等差数列、等比数列和裴波那契数列

  相邻的项之差恒相等,这样的数列,就是等差数列,例如1,3,5,7,9,......。

  相邻的项之间的比恒相等,这样的数列就是等比数列了。例如1,2,4,8,16......。

  前两个数是1,第三个数开始是前两个数之和,这样的数列叫做裴波那契数列。

  利用for循环遍历整数组合

  用于求一些线性方程组的整数解,往往有两条等式,用一条方程作为循环变量的组合,另外一条方程作为附加条件,从而选出整数解。二元方程需要单层循环,三元方程需要二层循环,如此类推。鸡兔同笼问题、百僧分百馒等都属于这类问题。

  典型问题

  《简易计算器》、《一起来背古诗》、《闰年和平年》、《逢七过一》、《龟兔再赛跑》、《蚂蚁爬树》、《地主发金币》、《百僧分百馒》、《字符三角塔》、《甜品店的数字》。具体查看有关教程。