浙江省计算机二级python基础理论知识(from全国计算机等级考试)--有一定的编程基础的小白

程序设计基础理论

一.理论知识

1.发展历程:机器语言→汇编语言#(前两个直接操作计算机硬件)→高级语言(与硬件无关、用于表达语法逻辑更接近自然语言)

2.高级语言→静态语言--编译--源代码一下子转换成目标代码--翻译--翻译过一次就不需要编译程序或者源代码(C语言),脚本语言--解释--逐条转换并运行--同声传译--每次运行都需要解释器和源代码(python)

3.程序的构成:输入数据(文件输入、网络输入、控制台输入、交互界面输入、随机数据输入、内部参数输入)、处理数据、输出数据(控制台输出、图形输出、文件输出、网络输出、操作系统内部变量输出)----IPO程序编写方法包括输入、处理、输出

4.Python通过缩进来体现语句之间的逻辑关系

5.Python3.x(解释器都采用Unicode进行编码表达所有字符信息)无法兼容python2.x的既有语法

6.运行python程序的两种方式:交互式、文件式(IDLE--内置的集成开发工具都支持)

例题:

斐波那切数列

a , b = 0 , 1

while a<1000:

    print(a, end=",")

a , b = b , a+b

While循环用冒号,不用加括号

输出后面加上某个符号,可以用,end= 

如果a与b要直接交换可以进行直接的兑换

圆面积的计算(半径25)

r = 25

area=3.1415 * r * r

print(area)

print("{:.2f}".format(area))

只留两位小数:{:.2f}.format()

个例:

>>>2048/1024

2.0

>>>10in [10,11]

True

>>>list(range(5))

[0,1,2,3,4,5]

不过这都没有关系,后面细讲

二.基本语法元素

1.格式框架

缩进:开始前的空白区域(Tab),表示python程序间的包含和层级关系--用来表示程序逻辑

        错误类型:unexpected indent

注释:#可用于任何位置

      “”也可

2.语法元素

  变量:赋值(可以自加 i += 1)(判断:无需先创建和赋值而直接使用--错误)

  命名:大小写字母、数字、下划线、汉字等字符组成;首字母不能为数字;标识符中间不能有空格,长度没有限制;对大小写敏感

  保留字:共33个(下面会进行学习)

3.数据类型

   数字、字符串、元组、集合、列表、字典

   进制:十六进制0x 八进制0o 二进制0b

   字符串:(见后)

4.语句元素

数据+操作符

赋值:变量=表达式

      同步赋值: 变量1,变量2,变量3=表达式1,表达式2,表达式3

      交换:a,b=b,a

引用:

     import<功能库名称>

     <功能库名称>.<函数名称>

     turtle.fd

5.输入输出函数

  1)input函数

     <变量>=input(<提示性文字>)

     A = input(“请输入一个小数:”)

     B = input()

2)eval函数

   去掉字符串最外面的引号

   A = eval(“1234”)#A=数字1234

   A = eval(“123+123”)#A=246

   当然不能把字符串的引号去掉,不然会报错:A=eval(“pyboook”)//NameError

   应该改为:A=eval(“’pybook’”)

   经常与input函数连用A=eval(input(<提示性文字>))

3)print()函数

   print(<”待输出字符串”>)

   print(value,value,calue)

   print(“数字{}和数字{}的乘积是{}”.format(a,b,a*b))

   print(a, end=”.”)#一般为默认增加换行,end后面加输出的结尾且不会自动产生换行

6.倒叙

输入:我喜欢莎士比亚

输出:亚比士莎欢喜我

s = input("请输入一段文本:")

i = len(s)-1

while i>=0 :

    print(s[i],end="")

i=i-1#i += -1

damn!这题我的二级考试的时候就类似的考到了(但不太一样)

三.数据类型

1.整数

  不同进制的整数可以直接运算

2.浮点数

  科学计数法 -1.01e3即为-1010.0(以10为基数,-1.01*10^3)

  pow(a,b)即为a^b(整数运算精度比浮点数更高)或者a**b,pow函数比普通运算速度更快

  不确定尾数:0.1 + 0.2 == 0.3#False

  排除不确定尾数的干扰:round函数进行小数点后四舍五入

  round(a,b)如:round(1.2356,2)#1.24 round(1.228976,1)#1.2

3.复数

  基本单位:j

表达方式:a+bj

提取方式:z.real  z.image

如:(1.23e4+5.67e4j).real #1230

(1.23e4+5.67e4j).image #5670

  如果:1.23e4+5.67e4j.image #69000.0

        先获得5.67e4j的虚部再与1.23e4求和计算

  (包括之后遇到的题都可以进行类推)

4.运算

  整数与浮点数混合→浮点数

  整数之间的运算类型与操作符相关→/运算的结果是浮点数→1010/10=101.0

  整数和浮点数与复数运算→复数

  //取整 **次幂

  X op = y 等价于 X = X op y

5.一些有关的内置函数

  >>>abs(-30)

  30#取绝对值

  >>>abs(30+40j)

  50.0#在复数情况时平方和开方

  >>>divmod(10,3)

  (3,1)#(10//3,10%3)整除,mod余数

  >>>c = divmod(10,3)

  >>>c[0]

  3

  >>>pow(4,10,2)

  0#4^10%2(4的十次方%2)

  >>>pow(2,4)

  16(2的四次方)

  >>>round(1.24)

  1#四舍五入为整数

  >>>round(1.24,1)

  1.2#四舍五入位小数

  >>>min(a,b,c,d)

  >>>max(a,b,c,d)

6.字符串

  单行字符串用” “ ‘ ‘

  多行字符串用’’’  ‘’’

  >>>print(‘’’这是’多行字符串’的第一行

     这是’多行字符串’的第二行

     ‘’’)

  这是’多行字符串’的第一行

  这是’多行字符串’的第二行

7.转义字符

  \n换行  \\反斜杠 \’单引号 \”双引号 \t(tab字符) \续行

  比如:

  if (a>10 and a<100) or \

   (a <-10 and a > -100):

   print(‘Bingo’)

8.索引

  <字符串或者字符串变量名>[序号]

  >>>”对酒当歌,人生几何?”[1]

   ‘酒’#正数从0开始从左数

   >>>”对酒当歌,人生几何?”[-1]

   ‘?’#负数从-1开始从右数,标点符号算一个字符

   >>>”譬如朝露,去日苦多。”[2:4]

   ‘朝露’#从2到4不包括4

   >>>”譬如朝露,去日苦多。”[4:2]

   ‘’

   >>>”譬如朝露,去日苦多。”[5:-2]

   ‘去日苦’#也是不包含-2

   >>>”譬如朝露,去日苦多。”[5:]

   ‘去日苦多。’

   >>>s = “青青子衿悠悠我心。”

   >>>s[5]

   ‘悠’

9.format()

  >>>”{}曰:学而时习之,不亦{}?”.format(“孔子”,”说乎”)

  ‘孔子曰:学而时习之,不亦说乎?’#{}内可以按顺序填入

   >>>”{1}曰:学而时习之,不亦{0}?”.format(“说乎”,”孔子”)

   ‘孔子曰:学而时习之,不亦说乎?’#{序号--与参数的对应关系}→可以用于{}数量与后面不对等时

   >>>”《论语》是{}弟子所著。{}曰:学而时习之,不亦说乎。”.format(“孔子”)

   #IndexError错误,个数不相符,应改为:

   >>>”《论语》是{0}弟子所著。{0}曰:学而时习之,不亦说乎。”.format(“孔子”)

   ‘《论语》是孔子弟子所著。孔子曰:学而时习之,不亦说乎。’

   #如果要输出{},则要输出{{}}

   >>>s=”等级考试”

   >>>”{:25}”.format(s)

   ‘等级考试                    ‘#左对齐

   >>>”{:>25}”.format(s)

   ‘                    等级考试’#右对齐

   >>>”{:^25}”.format(s)

   ‘           等级考试         ‘#居中对齐

   >>>{:*^25}”.format(s)

   ‘***********等级考试*********’#居中对齐内填充,可以任何符号,比如*、是

  >>>”{:1}”.format(s)

  ‘等级考试’#当数值较小的时候,直接原式输出

  >>>s , y = “等级考试” , “-”

>>>”{0:{1}^{2}}”.format(s,y,25)   

  ‘-----------等级考试-----------’

  >>>z = “^”

  >>>”{0:{1}{2}{3}}”.format(s,y,z,25)

  >>>”{:.2f}”.format(123.4567)

  123.46#两位小数四舍五入

  >>>”{:>25.3f}”format(123.4567)

  ‘                  123.457’#就是上面几种的综合

  >>>”{:.5f}”format(“全国计算机等级考试”)

  ‘全国计算机’

  >>>”{:b},{:c},{:d},{:o},{:x},{:X}”.format(425)

  ‘11010101001,∑,425,651,1a9,1A9#b二进制,cUnicode,d十进制,o八进制,x小写十六进制,X大写

  >>>”{:.2e},{:.2E},{:.2f},{:2%}”.format(3.141)

  ‘3.14e+00,3.14E+00,3.14,314.10%’

10.字符串操作

  X+y 直接连接X和y

  X*n或者n*X 复制n次X

  X in s 判断X是不是s的子字符串(True、False)

  >>>len(“全国计算机等级考试Python语言课目”)

  19#求长度,中文和英文字符都算(根据Unicode)

  >>>str(1010)

  ‘1010’#转换成字符串

  >>>str(0x3F)

  ‘63’#还能转换成十进制

  >>>chr(1010)

  ‘c’#转换成Unicode对应字符

  >>>ord(“和”)

  21644#转换对应编码

  >>>hex(1010)

  ‘0x3f2’#转换成十六进制的字符串

  >>>oct(-255)

  ‘0o1762’#转换成八进制的字符串

  >>>”Python”.lower()

  ‘python’

  >>>”Python”.upper()

  ‘PYTHON’

  >>>”Python is an excellent language.”.split()

  [‘Python’,’is’,’an’,’excellent’,’language.’]#用逗号隔开,默认为空格分词

  >>>”Python is an excellent language.”.split(‘a’)

  [‘Python is’,’n excellent l’,’ngu’,’ge.’]#以a为分隔界限进行分割,其中a直接被切除

  >>>”Python is an excellent language.”.count(‘a’)

  3#数个数

  >>>”Python is an excellent language.”.replace(‘a’,’#’)

  ‘Python is #n exxcellent l#ngu#ge.’#把前面那个出现的用后面的进行替换

  >>>”Python”.center(20,”=”)

  ‘=======Python======’#自动居中,后面填充=,可以类比于

  >>>”{:=^20}”.format(“Python”)#同上

  >>>”  ==Python==  “.strip(‘’)

  ‘==Python==’#默认去掉左边和右边的空格

  >>>”  ==Python==  “.strip(“=n”)

  ‘Pytho’#左侧和右侧都去除strip内的所有元素,只是元素,不限位置

  >>>””.join(‘PYTHON’)

  ‘P Y T H O N’#一般都会用join来加分隔符,默认空格

  >>>”,”.join([‘1’,’2’,’3’,’4’])

  ‘1,2,3,4’

11.类型转换与判断

   >>>type(10.10)

   <class ‘float’>#判断类型

   转换:int()  str()  float()

12.凯撒实例

   原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

txt = input("请输入文本:")

for p in txt:

    if 'a' <= p <= 'z':

        print(chr(ord('a')+(ord(p)-ord('a')+3)%26),end="")

    elif 'A' <= p <= 'Z' :

        print(chr(ord('A')+(ord(p)-ord('A')+3)%26),end="")

    else:

        print(p,end="")

 四.程序控制

 1.if类

   if<something>:

    <Something>

   elif<条件二>:

    <something>

   else:

    <something>

  

   <成立的话> if <条件> else <不成立的话>#表达式(99+1)而不是语句(a=99+1)

   Token = “” if s%3 == 0 and s % 5 == 0 else “不”

   

  条件为正常的表达式(and or ())

2.for类

    for<循环变量> in <遍历结构>:

    遍历结构可以为字符串、文件、range()函数、组合数据类型等

    for c in ‘Python’:

    for i in range(5): #range后面加循环的次数,但是i的数值范围为[0,4]

    for s in ‘PY’:

    print(“循环在执行中:”+s)#当然也可以用,s

else:

print(“循环正常结束”)

3.while类

while n<10:

print(n)

           n += 3

      S, idx = “PY”,0

      while idx<len(S):

       print(“循环在执行中:”+S[idx])

         idx += 1

      else:

         print(“循环已结束”)

break 和 continue的用法一样

4.异常处理

>>>n = eval(input(“请输入一个数字:”)

请输入一个数字:Python

NameError:name ‘Python’ is not defined

因此有异常处理(处理输入异常)

try:

n = eval(input(“请输入一个数字:”))

print(“输入数字的3次方值为:”,n**3)

expect:

print(“输入错误,请输入数字!”)

>>>for i in range(5):

print(10/i, end=” ”)  

ZeroDivisionError:division by zero

可以用异常处理来处理中间的异常

try:

for i in range(5):

print(10/i, end” “)

         except:

              print(“因某种原因错了!”)

   滥用try-expect的后果:影响代码的可读性,增加代码维护难度

  True=非0值,非空数据集

5.猜数字游戏

产生随机数

利用random库

Target = random.randint(1,1000)

代码为:

import random

target = random.randint(1,1000)

while True:

    guess = eval(input("请输入一个0-1000的整数:"))

    if guess>target:

        print("猜大了")

    elif guess<target:

        print("猜小了")

    else:

        print("猜对了")

        break

五.函数与代码复用

 1.函数的定义

   def fact(n):

      s = 1

       for i in range(1,n+1):

           s *= i

       return s

   #def 函数名(参数列表):

......

return (返回值列表)

   之后在主函数可以直接进行调用

   print(fact(100))

2.函数的参数传递

  >>>def multiply( x , y = 10):

   print( x * y)

  >>>multiply(99)

  990

  >>>multiply( y=2,x=99)

  198#参数间的顺序可以任意调整,只要对每个必要参数赋予实际值即可

3.return

  return x*y#return后面可以加表达式

  >>>def multiply (x,y=10)

     return x*y , x+y

  >>>s = multiply(99,2)

  >>>print(s)

  (198 , 101)

  >>>a , b = multiply(99,2)

  >>>print(a)

  198

  当然也可以不用return,可以直接进行print的输出

4.作用域

   >>>def multiply (x=99, y=2)

        z= x*y

        return z

>>>s = multiply(99,2)

>>>print(z)

NameError#z是一个局部变量

全局变量:

>>>n=2

>>>def multiply(x,y=10)

global n#global<全局变量>

return x*y*n

 六.组合数据类型

   1.集合set

     元素不可重复,主要用于元素的去重

元素类型不可变数据类型(整数、浮点、字符串、元组不可变列表、字典、集合可变)

     无序

     >>>T={1010,”1010”,12.3,1010,1010}

     >>>print(T)

     {1010,’1010’,12.3}#输入不受限制,输出自动去重

  1. T S内但不在T内

S&T 同时属于S和T

S^T S和T内不是共同拥有的元素

S|T S和T内的所有元素

S.add(x) 如果没有x则将x增加到S中

     S.remove(x) 如果x在S中移除该元素,如果x不在S中会出现KeyError异常

     S.clear()移除所有项

     len(S)元素几个

     X in S 如果X是S的元素,返回True 否则返回False

     X not in S 同理

>>>S = set()#空集合

>>>S = set(‘知之为知之不知为不知’)

>>>S

{‘不’,’为’,’之’,’知’}#自动去重

2.字符串

S.index(x) 序列s中第一次出现x的位置

S.count(x) 数x的个数

S[i:j:k]从i到j的步长为k

3.列表

  不需要预定长度,元素可以重复

  >>>ls=[1010,’1010’,[1010,’1010’],1010]

  >>>ls[-2]

  [1010,’1010’]

  >>>ls[0]

  1010

  >>>ls[5]

IndexError

  >>>len(s)#有多少嘞

  >>>min(ls)

  >>>max(ls)

  >>>list(ls)#把ls转变为列表类型,ls可以是字符串、字段、集合等

  Ls.append(x)在列表最后增加一个元素x(只能增加一个元素,如果想要增加多个元素,可以使用+进行列表的合并)

  Ls.insert(i,x)在列表ls的第i个位置加上x,i之后的序号依次增加

  Ls.clear()删除ls中的所有元素

  Ls.pop(i)将列表ls中第i项元素取出,并从ls中删除

  >>>It = [“1010”,”10.10”,”Python”]

  >>>print(It.pop(1))

  10.10

  >>>print(It)

  [“1010”,”Python”]

  Is.remove(x)将列表中出现的第一个x删除

  当然,也可以用python保留字段进行删除

  >>>It = [“1010”,”10.10”,”Python”]

  >>>del It[1]

  >>>print(It)

  [‘1010’,’Python’]

  >>>It = [“1010”,”10.10”,”Python”]

  >>>del It[1:]

  >>>print(It)

[‘1010’]

>>>It = [‘1010’,’10.10’,’Python’,1010,1111]

>>>del It[1:5:2]#[首:尾:步长]

[‘10.10’,1010]

  Ls.reverse()ls中的元素进行反转(由此也可见,列表是有顺序的)

  Ls.copy()生成新列表,复制ls中的所有元素(如果是Lt=Ls,那么如果对Lt实行的操作,Ls会自动同步)

  >>>It = [“1010”,”10.10”,”Python”]

  >>>It[1:2] = [1010,10.10,0x1010]

  >>>print(It)

  [‘1010’,1010,10.1,4112,’Python’]

  #不需要It[1:2]与后面的长度相等,遵循“多增少减”的原则

4.字典

  {<键一>:<值一>,<键二>:<值二>}

  >>>d = {“201801”:”小明”,”201802”:”小红”}

  >>>print(d)

  {“201801”:”小明”,”201802”:”小红”}

  >>>print(d[“201801”])

  小明

  >>>t = {}#或者也可以换成t = dict()

  >>>t[“201801”]=”小红”

  >>>print(d)

  [“201801”:”小红”]

  len(d)字典d的元素个数

  min(d)键的最小值

  dict(d)生成一个空字典

  >>>d = {“201801”:”小明”,”201802”:”小红”,”201803”:”小白”}

  >>>d.keys()

  dict_keys([‘201801’,’201802’,’201803’])#d.keys()所有键的值

     >>>d.values()

     dict_valus([“小明”,”小红”,”小白”])#d.values()所有值

     >>>d.items()

     dict_items([(‘201801’,’小明’),(‘201802’,’小红’),(‘201803’,’小白’)])#d.items()所有键值对

     >>>d.get(‘201802’)

     ‘小红’#查找键对应的值,用get

     >>>d.get(“201804”)

     >>>d.get(“201804”,”不存在”)

     ‘不存在’#如果找不到,可以输出后面的那个,如果后面没有写那就默认为空,即没有输出

     >>>d.pop(‘201802’)

     ‘小红’

     >>>print(d)

     {“201801”:”小明”,”201803”:”小白”}

     >>>d.pop(“201804”,”不存在”)

     ‘不存在’

     >>>d = {“201801”:”小明”,”201802”:”小红”,”201803”:”小白”}

     >>>print(d.popitem())

     (‘201803’,’小白’)

     >>>print(d)

     {“201801”:”小明”,”201802”:”小红”}#随机找出并删除一个键值对

     d.clear()全删除

     删除某一元素,也可以用del

     >>>del d[“201801”]

     >>>print(d)

     [‘201802’:’小红’,’201803’,’小白’]

     可以用in来判断键是否在字典中

     >>>”201801” in d

     False

     >>>”201803” in d

     True

     >>>d = {“201801”:”小明”,”201802”:”小红”,”201803”:”小白”}

     >>>for k in d

      print(“字典的键和值分别是:{}和{}”.format(k,d.get(k)))

     字典的键和值分别是:201801和小明

     字典的键和值分别是:201802和小红

     字典的键和值分别是:201803和小白

七.文件和数据格式化(这里主要是一两道选择+判断) 

1.文件的使用

  文件类型:文本文件(UTF-8编码,如txt),二进制文件(如png、avi等)

  如果是二进制方式打开文件,文件将会被解析成字节流  

  f = open(“a.txt”,”rt”)#rb只读二进制文件,t是文本文件(默认值)

  后面加打开模式r→只读--不存在FileNotFoundError

                w→覆盖--不存在则创建,存在则完全覆盖

                x→创建写模式--若存在FileExistsError

                a→追加内容--不存在则创建

                +→增加同时读写功能

  f.close

  >>>PATH = “D:\\”#多加一个\是转义字符

  >>>f = open(PATH + “a.txt”,”rt”)#打开文件--将文件与程序中的对象关联起来

  >>>print(f.readline())

  全国计算机等级考试#字符串输出时不会输出“”

  >>>f.close()#不可以不关闭文件

  >>>print(f.readline())

  ValueError I/O操作错误

  >>>f = open(“D:/bar.txt”,”r”)

  >>>s = f.read()

  >>>print(s)

  新年都未有芳华,二月初惊见草芽。

  白雪却嫌春色晚,故穿庭树作飞花。

  >>>f.seek(0)#将读取指针重置到文件开头

  >>>ls = f.readlines()

  >>>print(ls)

  [‘新年都未有芳华,二月初惊见草芽。\n’,’白雪却嫌春色晚,故穿庭树作飞花。\n’]#以列表的形式

  >>>f.close()

  遍历行:

  f = open(‘D:/bar.txt’,”r”)

  for line in f:

      print(line)#逐行遍历文本

  f.close()

  新年都未有芳华,二月初惊见草芽。

  白雪却嫌春色晚,故穿庭树作飞花。

  用w写入的方式:

   Way1:f.write(“”)直接写入

   Way2:f.writelines(ls)#ls为一个列表,但是列表的各个元素之间要写入转义字符隔开,不然就是一行没有空格的字符串

2.数据组织的维度

A.一维线性:空格分隔、逗号分隔、换行分隔、分号分隔等

B.二维成表:CSV(也可用于高维数据的储存)

  基本的代码为:

for row in ls:

for item in row:

    <对第row行第item列元素进行处理>

C.高维json/书的格式

 八. random库与time库

 在使用之前,要播种种子

1.random()

>>>from random import

>>>seed(10)播下的种子每次生成的随机数一致

1.random()  生成[0.0-1.0)之间的随机小数

  randint(a,b) 生成[a,b]之间的整数

  uniform(a,b) 生成[a,b]之间的小数

2.time()

  >>>import time

  >>>time.time()#获取当前时间戳

  >>>time.gmtime(now)#获取当前UTC时间

  >>>time.localtime(now)#自动转换为北京时间

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值