2023年9月28日·13 min read

Python计算机二级(二)

Python计算机二级(二)

一、前言

先来看一下前面都学了些什么:

一、Python语言的基本语法元素: 1、程序的基本语法元素:程序的格式框架、缩进、注释、变量、命名、保留字、数据类型、赋值 语句、引用

2、基本输入输出函数:input()、eval()、print()

3、源程序的书写风格

各位可以再复习一下,再看正文前先过一遍脑子。不会的可以去看一下前面的:

Untitled

二、正文

看一下今天学什么:

一、Python语言的基本语法元素: 1、程序的基本语法元素:程序的格式框架、缩进、注释、变量、命名、保留字、数据类型、赋值 语句、引用

2、基本输入输出函数:input()、eval()、print()

3、源程序的书写风格

1、数字类型:整数类型、浮点数类型和复数类型

我记得前面的文章里讲过。

整数类型(int):字如其人,就是表示整数,比如 1,2 ······这类。

选读: python的int类型没有范围限制,而其它语言一般有限制,例如C/C++,C#,Java等。他们的整数类型非常多,类如long(-264 ~~ 264-1),int(-232 ~~ 232-1)等

要判断这句话是否正确也很简单:

eg:

a = 123456789012314151617
 
print(a >= 2**32)
 
print(type(a))
 
output:
 
True
 
<class 'int'>

浮点数(float):又名小数,例如:1.0,1.2 ······等

还有一种情况,就是像a×10**n (python表达:aEn),不管a是否为小数,该形式均为小数。

eg:

a = 14E3 
print(a)
print(type(a))
 
output:
14000.0 #注意这个".0"
<class 'float'>

选读: C/C++,C#,Java还有一种表达方式,就是double,而double能容纳的小数范围比float大(像我就一直使用doubie,虽然这或许不是一个好习惯)

复数类型(complex):形如a+bj这样,其实就是a+b*i

我们可以在python进行复数的简单计算,例如:

`b = 1+2j c = 2+3j print(b*c)

output: (-4+7j)`

2、数字类型的运算:数值运算操作符、数值运算函数

数值运算操作符:

加(+)、减(-),乘(*)、除(/)、整数除(//,例如:16//5 = 3 )、求余(%,例如 10%3 = 1 )、次方(,例如:103 = 1000 )

eg:

c = 1+2 #加
print(c)
c = 1 - 2 #减
print(c)
c = 1*2 #乘
print(c)
c = 1/2 #除
print(c)
c = 16//5 #整数除
print(c)
c = 101%2 #求余
print(c)
c = 2**3 #乘方
print(c)
 
output:
3
-1
2
0.5
3
1
8

增强赋值操作符:

形如 a ()= b ,其中括号内的就是上面所讲的操作符,意思是a = a()b 即将a()b的结果赋值给a,这也就意味着你必须先声明一下a。

eg:

d += 1
error:
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
d:\Untitled-1.ipynb Cell 5 in <cell line: 1>()
----> 1 d += 1
 
NameError: name 'd' is not defined
 
_______________________________________________分割线______________________________
 
a = 1
a += 1 # a = a + 1
print(a)
output:
2

数值运算函数:

abs() : 求绝对值 。例如:

`a = -1 b = abs(a) print(b) a = 1+3j b = abs(a) print(b)

output: 1 3.1622776601683795 #根号10`

divmod():计算商与余数的函数,例如:

a = divmod(4,2) # 4//2 , 4%2
print(a)
 
output:
(2, 0)

max()和min():这个可能要等到讲列表那里才能讲,我先把代码放在这里:

S = [1,3,8,9,25,66,87,20,2099]
print(max(S))
print(min(S))
#max() 函数是计算任意多个数字里面的最大值,而 min() 函数是计算任意多个数字里面的最小值
 
output:
2099
1

这个可以通过冒泡排序和快速排序来实现

pow():计算幂次方运算的函数,相当于x**y。例如:

a = pow(3,10)
print(a)
output:
59049

他还有第三个参数,即对pow(x,y)进行求余(x**y % z)。例如:

a = pow(3,10,10**4)
print(a)
output:
9049

round():返回浮点数x的四舍五入值。形如round(x,y),其中y表示约到第几位。例如:

a = round(20.012181212121212,4)
print(a)
 
output:
20.0122

我们可以等到学完函数后重新写一下这些函数。

3、字符串类型及格式化:索引、切片、基本的format()格式化方法

字符串的表达方式:

  1. 由一对单引号或双引号表示,该方式仅用于表示单行字符串

  2. 由一对三单引号或三双引号,该方式可以表示多行字符串

  3. 如果希望在字符串中包含单引号,外面就用双引号;反之亦然。否则出错

  4. 如果希望在字符串中既包含单引号又包含双引号,外面用三单引号

eg:

a = """
qwertyuiop
asdfghjkl
zxcvbnm
"""
b = ''' 
1234567890
-=-=-=
'''
c = "'Epic Games'"
d = '"e"'
e = ''' "a" 'a' '''
print(a,b,c,d,e)
 
output:
 
qwertyuiop
asdfghjkl
zxcvbnm
  
1234567890
-=-=-=
'Epic Games' "e"  "a" 'a'

看一下vscode的代码高亮:

没问题。

索引:

字符串,就是字符连成串(废话文学在线呈现)[doge]

但是,这句话告诉我们,我们是有一种方法通过来访问其内部的字符,而这种方法就叫做索引。

比如我要将 I_love_python_! 中最开始的那个字符呈现在控制台上,那么我就可以这么做:

d = "I_love_python_!"
print(d[0])#索引
 
output:
I

不知道你们有没有发现,第一个字符我们不会写成“1”,而是“0”,这一点我们要注意。不过我们现在可以写出一张位置图了:

I _ l o v e _ p y t h o n _ !

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

顺序索引形如:d[ l -1 ] (l为位序)

那么就有人问了,既然可以从前往后,是不是也可从后往前了。

虚构的对话: a : 既然可以从前往后,是不是也可从后往前?

b:当然可以,不过你先想一想该怎样做。

a:我想想······是不是这样:d[-1]表示最后一个,然后再往前推

b:你是怎么想的?

a:因为需要与顺序索引有所不同,但是括号内的东西又要是int(方便查询),于是使用负号

的确如此,从后往前的索引是这样写的,但为何要这样写我也不知道。不过上面那种理解应该会方便记忆。

试着写一张反着的位次图:

I _ l o v e _ p y t h o n _ !

  • 15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

形如:d[-l](l为位序)

那么你们有没有想过,有没有一种方法能选定一些字符,然后再输出呢?

这个方法就叫切片。

切片就是对字符串中某个子串或区间的检索。形如:d[a:b] (0 <= a <= b <= 长度-1)

看一下实例:

d = "I_love_python_!"
print(d[1:5])
 
output:
_lov

虽然切片是这么写的([a:b]),但实际上在取值上并不是在[a,b]中进行,而是在[a,b) (左闭右开) 中进行取值,请一定要记住!

基本的format()格式化方法:

这个我好像在第一篇文章里讲过,可以去看一下:

Python计算机二级(一) - 知乎 (zhihu.com)

而format()就是通过和:来代替以前的%。

看一下实例吧:

#format()
print(format(('baidu','com')))#元组
print("{}:{}".format('192.168.0.100',8888))
#192.168.0.100:8888
print("{server}{1}:{0}".format(8888,'192.168.1.100',server='Web Server Info :'))
#Web Server Info :192.168.1.100:8888
print("{0[0]}.{0[1]}".format(('baidu','com')))
 
output:
('baidu', 'com')
192.168.0.100:8888
Web Server Info :192.168.1.100:8888
baidu.com

4、字符串类型的操作:字符串操作符、处理函数和处理方法

字符串的“加减乘除”

“+”:通过“+”来实行字符串的添加(直接加在它的后面)

eg:

d = "Epic Games "
d += "IntelliJ IDEA Community Edition 2022.1.3"
print(d)
 
output:
Epic Games IntelliJ IDEA Community Edition 2022.1.3

”:通过“”来重复字符串

eg:

c = "Microsoft VS Code" * 3
print(c)
d = "Epic Games "
d *= 3
print(d)
 
output:
Microsoft VS CodeMicrosoft VS CodeMicrosoft VS Code
Epic Games Epic Games Epic Games

放心,没有减和除,不过你可以想一下应该可以起什么作用,并写在评论区中。

另一种操作符 in :判断有无该字符串

eg:

d = "abc"*2 #重复"abc"
print(d)
print("a" in d ,"s" in d) #in:判断有无该字符串
 
output:
abcabc
True True
abcabc

字符串处理函数

这里我就不细讲了,上图:

5.类型判断和类型间转换

1,我们都知道是int类型的(不知道就看我之前的文章:Python计算机二级(一)),但是怎么样才能让其类型显示在控制台上呢?这就让我来介绍一下type()和isinstance()。

eg:

a = 1
d = "a"
print(type(a))
print(type(d))
print(type(123.0))
print(isinstance(a,int))
 
output:
<class 'int'>
<class 'str'>
<class 'float'>
True

可以发现,type()会直接输出成对应类型,而isinstance()是判断是否为~~类型,然后输出成bool值。

选读: 不过type与isinstance是有区别的(要不然为什么要分成两个函数呢)。

type() 不会认为子类是一种父类类型,不考虑继承关系。

而isinstance() 会认为子类是一种父类类型,考虑继承关系。

类型间转换:

一般我们使用这些函数:

eg:

a = 1.0 #浮点数
#a = "1" #string
b = int(a)#将 a 转换为整数,a 可以是浮点数或字符串
if(type(b) == int):
    print(b)
a = 1 #整数
#a = "1" #string
b = float(a)#将 a 转换为浮点数,a 可以是整数或字符串
if(type(b) == float):
    print(b)
b = str(a)#将 a 转换为字符串,a 可以是整数或浮点数
if(type(b) == str):
    print("'" + b +"'")
 
output:
1
1.0
'1'

结尾

现在,你已经学会了第二章的内容,你也离结业更进了一步。

看一下下一章的内容:

三、程序控制结构 1、程序的三种控制结构;

2、程序的分支结构:单分支结构、二分支结构、多分支结构;

3、程序的循环结构:遍历循环、无限循环、break和continue循环控制。

4、程序的异常处理:try-except。

看起来内容不难,应该是会很轻松。