少女祈祷中...

计算机二级(Python)杂笔

学习目标

  1. 考试大纲
  2. 考试题型与分值
  3. 学习方法与策略

考试大纲

  1. 掌握python语言基本语法规则
  2. 掌握不少于2个python基本库
  3. 掌握不少于2个第三方python基本库及安装方法
  4. ·能够分析python程序
  5. 熟练使用IDE开发环境,能够将脚本转变为可执行程序
  6. 了解网络爬虫,数据分析,数据可视化,机器学习,web开发等

考试内容

  1. python基本语法元素
  2. 基本数据类型
  3. 程序的控制结构
  4. 函数和代码利用
  5. 组合数据类型
  6. 文件和数据格式化
  7. python计算生态

考试方式

  1. 上机考试,时间120分钟,满分100
  2. 单项选择40分
  3. 操作60分(基本编程题和综合编程题)
  4. 考试环境为win7,建议python3.4

学习方法

  1. 整理时间(2-3个月)
  2. 公共知识部分不用太多时间
  3. 官方教材当参考书
  4. 多刷题

python环境搭建

省略

环境变量快捷方式:

path=%path%;C:\Python 

基础语法入门

学习目标

  1. 标识符

  2. 保留字

  3. 变量

  4. 常量

  5. 代码注释

标识符

eg:

a = c
number = 10
c = kill

保留字

python自己留着用的字符序列,共35个

image-20240626225941846

变量与常量

变量:python中用来存储数据的最小单元,它有类型,名称,值

常量:类似数学中的常数,通常变量的值就是常量

eg:

a = c
name = "魏鑫"
pi =3.1415926

代码注释

eg:

#这是一条注释
'''
这是一条注释
'''
""" 
这是一条注释
"""

数据类型

学习目标

  1. 基本数据类型–数值型,字符串型,布尔型
  2. type()函数的使用
  3. 数据类型转换

基本数据类型–数值型–整数类型

image-20240626231904706

eg:

print(11)
print(0x001)
print(0xc1)

输出结果

11
1
193

任何进制转换为十进制

二进制转十进制

image-20240628140939533

八进制转十进制

image-20240628141011517

十六进制转十进制

image-20240628141058403

基本数据类型–数值型–浮点型

普通浮点

1.23 2.23 34.21

科学浮点

1.10e3 -2.02E5

基本数据类型–数值型–复数类型

复数 a+bj,其中a是实数部分,简称实部,b是虚数部分,简称虚部。

$$ j=\sqrt{-1} $$

j为虚数单位

注意:当b为1时,1不能省略,即1j

eg:$11.3+4j$

$-5=2j$ 

对于复数$Z$,可以使用z.real和z.imag分别获得它的实数部分和虚数部分

eg:

a = 5 + 2j
print(a.real)	#获取变量a的实数部分
print(a.imag)	#获取变量a的虚数部分

输出

5.0
2.0

基本数据类型–字符串

双引号括起来的字符串

“hello world”

"""

可换行

"""

单引号括起来的字符串

‘hello world’

’''

可换行

’''

基本数据类型–布尔型

通常用来逻辑判断

True False

Type()函数

可以用来识别某个变量或常量的数据类型

整数:<class ‘int’>

浮点型:<class ‘float’>

复数:<class ‘complex’>

字符串:<class ‘str’>

布尔型:<class ‘bool’>

eg:

a = 1
b = 3.14
c = 5 + 2j
d = "魏鑫"
e = True
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))

输出

<class 'int'>
<class 'float'>
<class 'complex'>
<class 'str'>
<class 'bool'>

数据类型转换

image-20240628153646264

数据类型转换只能转换本就是那种类型的数据

eg:

age = '16'
print(type(int(age)))
a = 'abc'
print(type(int(a)))

输出

<class 'int'>
Traceback (most recent call last):
  File "d:\python\Untitled-2.py", line 4, in <module>
    print(type(int(a)))
               ^^^^^^
ValueError: invalid literal for int() with base 10: 'abc'

当要转换浮点型为整数时

eg:

a = 5.1
b = 5.9
z = int(a)
x = int(b)
print(z)
print(x)
print(type(z))
print(type(x))

输出

5
5
<class 'int'>
<class 'int'>

Tips

  1. 进制表示法 在计算机中,数字可以用不同的进制来表示,常见的有二进制、八进制、十进制和十六进制。
  • 二进制:二进制使用0和1来表示数字,以0b或0B开头。例如,0b10表示二进制的数字2。
  • 八进制:八进制使用数字0到7来表示,以0o或0O开头。例如,0o10表示八进制的数字8。
  • 十进制:十进制是我们平常使用的十进制表示法,没有前缀。例如,10表示十进制的数字10。
  • 十六进制:十六进制使用数字0到9以及字母A到F(不区分大小写)来表示,以0x或0X开头。例如,0x10表示十六进制的数字16。

加"“和不加"“所输出的数值类型不一样

eg;

a = 12
print(type(a))
b = "12"
print(type(b))

输出

<class 'int'>
<class 'str'>

算数运算符

学习内容

运算符-算数运算符,字符串运算符,赋值运算符,关系运算符,逻辑运算符input()的使用

运算符-算数运算符

运算符 举例 描述
+ x + y x与y的和
- x - y x与y的差
* x * y x与y的积
/ x / y x与y的商
// x // y x与y的整商
% x % y x与y取商后的余数,也称模运算
** x ** y x的y次幂
+ +x x本身
- -x x的负值

eg:

x = 18
y = 2
z = 4
c = 9
print(x + y)
print(x - c)
print(x * y)
print(x / y)
print(x // c)
print(y ** z)
print(x % z)

输出

20
9
36
9.0
2
16
2

运算符-字符串运算符

运算符 举例 描述
+ x + y 字符串x与字符串y相连
* x * y 复制y次字符串x

eg:

x = "hello "
y = "world"
z = 3
print(x + y)
print(x * z)
print(x + str(z))

输出

hello world
hello hello hello
hello 3

运算符-赋值运算符,增强赋值操作符

运算符 举例 描述
= x = 1 将1赋值变量给x
+= x += 1 与x = x + 1相似
-= x -= 1 与x = x - 1相似
*= x *= 1 与x = x * 1相似
/= x /= 1 与x = x / 1相似
//= x //= 1 与x = x // 1相似
**= x **= 1 与x = x ** 1相似
%= x %= 1 与x = x % 1相似

eg:

a = 12
b = 11
a, b = b, a	#a,b分别等于b,a
print("a的值为" + str(b))
a += 1
b += 2
print(a)
print(b)

输出

a的值为12
12
14

运算符-关系运算符

运算符 举例 描述
< x < y 判断x是否小于y
> x > y 判断x是否大于y
<= x <= y 判断x是否小于等于y
>= x >= y 判断x是否大于等于y
== x == y 判断x是否等于y
!= x != 判断x是否不等于y

计算后的结果为布尔型

eg:

    a = 2
    b = 3
    print(a > b)
    print(a < b)
    print(a != b)

输出

False
True
True

运算符-逻辑运算

运算 举例 描述
not not x 如果x的值为True,结果为False
如果x的值为False,结果为True
and x and y x 或 y任意一个值为False,结果为False;否则结果为True
or x or y x 或 y任意一个值为True,结果为True;否则结果为False

eg:

a = 7
b = 8
print(not a>b)
print(a>b and a==7)
print(a>b or a==7)

输出

True
False
True

input()函数

用来接收键盘输入的内容,接收的内容默认为字符串类型

eg:

age = input("请输入你的年龄:")
print("你的年龄为:" + age)
print(type(age))

输出

请输入你的年龄12
你的年龄为12
<class 'str'>

eg:

age = input("请输入你的年龄")
print("你现在的年龄为:" + age)
age_new = int(age) + 10	#将age转换为整数类型,此时age_new为整数类型
print("你10年后的年龄为:" + str(age_new))	#将age_new转换为字符串类型

Tips

  • 以下代码输出结果正确的是:
print(233>22 == true)

A:True B:False C:true D:NameError

正确答案:D #因为题目中的true首字母没大写,所以题目中的true就不是布尔型的True

程序控制结构之分支结构

学习内容

  1. 程序控制的三种结构
  2. 分支结构

程序控制的三种结构

  • 顺序结构
  • 分支结构
  • 循环结构

顺序结构

eg:

print(acvb)
print(123)
print("魏鑫sb")

分支结构-单分支结构:if

if <条件> :

<语句块>

image-20240703175422492

eg:

#判断成绩是否合格
score = input("请输入你的成绩")
if int(score) >60 :
    print("成绩合格")

分支结构-二分支结构:if-else

if <条件> :

<语句块1>

else <条件> :

<语句块2>

image-20240703180830648

eg:

#考试成绩及不及格
score = float(input("请输入你的成绩"))
if score > 60 :
    print("成绩合格")
else :
    print("成绩不合格")

输出

请输入你的成绩12
成绩不合格
#模拟收取款机,设置一个变量用来表示收款金额,通过键盘输入接收金额,判断是否满足收款条件
balance = 5000
money = int(input("请输入取款金额"))
if money <= balance and money % 100 == 0 :
    print("请稍等")
else :
    print("只能取整百或余额不足")

输出

请输入取款金额1000
请稍等

分支结构-多分支结构:if-elif-else

if <条件> :

<语句块1>

elif <条件> :

<语句块2> ……

else

<语句块N>

image-20240703205423235

eg:

#输入一个成绩,判断成绩为优秀,及格,不及格
score = float(input("请输入你的成绩"))
if score >= 80 :
    print("你的成绩为优秀")
elif score >= 60 and sore<80 :	#<80可写可不写
    print("你的成绩为及格")
else :
    print("你不及格")
————————————————————————————————————————————————————————————————————————————————————————————————————————————
score = float(input("请输入你的成绩"))
if score > 60 :
    if score >= 80 :
        print("优秀")
    else : 
        print("良")
else :
    print("不及格")

输出

请输入你的成绩1
你不及格
————————————————————————————————————————————————————————————————————————————————————————————————————————————
请输入你的成绩78

Tips new

增补

#ATM机案例
money = 50000
name = None
name = input("请输入你的名字:")
#定义查询函数
def query() :
    print("查询余额")
    print(f"{name}您好,你当前余额为{money}")
#定义存款函数
def saving() :
    global money
    a = int(input("请输入存款金额:"))
    money += a
    print(f"存款成功!你当前余额为{money}")
#定义取款函数
def get_money() :
    global money
    a = int(input("请输入取款金额:"))
    money -= a
    print(f"取款成功!你当前余额为{money}")
#定义主函数
def main() :
    print("欢迎来到银行")
    print("请选择交易类型")
    print("查询余额\t\t1")
    print("存款\t2")
    print("取款\t3")
    print("退出\t4")
    return input("请输入你的选择:")
#设置无限循环
while True :
    kybord_input = main()
    if kybord_input == "1" :
        query()
        continue #继续循环,返回到主菜单
    elif kybord_input == "2" :
        saving()
        continue
    elif kybord_input == "3" :
        get_money()
        continue
    else:
        print("退出")
        break #退出循环

程序控制结构之循环结构

学习内容

  1. while循环
  2. continue
  3. break

循环结构

遍历循环:for

无限循环:while

while循环

while <条件> :

<语句块>

image-20240704104352087

eg:

#输出10次hello world
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
____________________________________________________________________________________________________________
a = 0
while a < 10 :
    print("hello world")
    a += 1

输出

print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")
print("hello world")

eg:

#输出1-100的数
a = 1
while a <= 100 :
    print(a)
    a += 1

输出

1
.....
100

eg:

#计算1-100的和
a = 1
b = 0
while a <= 100 :
    b = a + b
    a += 1
print(b)

输出

5050

eg:

#输出1-100内的所有偶数
a = 1
while a<=100 :
    a += 1
    if a % 2 == 0 :
        print(a)

输出

2
4
.....
98
100

Tips

while <条件> :

<语句块>

else <条件> :

<语句块>

while循环结束后执行else

循环控制:continue

continue用来结束当前本次循环,continue后面的内容不会执行,然后继续执行下一次循环

eg:

#输出1-100内的所有偶数
a = 1
while a <=100 :
    a += 1
    if a % 2 == 1 :
        continue
    print(a)

循环控制:break

break:用于终止循环

eg:

#输出1-6内的所有偶数
a = 0
b = 1
while b <= 100 :
    b += 1
    if b % 2 == 0 :
         a += 1
         print(b)
         continue
    if a == 3 :
        break

程序控制之异常处理

try-except

try :

<语句块>

except:

<语句块>

eg:

try :
    score = float(input("请输入你的成绩"))
    print("你的成绩为:" and str(score))
except :
    print("程序错误,请确认输入的为数字")

输出

请输入你的成绩aa
程序错误,请确认输入的为数字

try :

<语句块>

except <异常类型> :

<语句块>

except :

<语句块>

eg:

a = 4
b = 0
try :
    c = a / b
except ZeroDivisionError :			#异常类型可以在输出的终端上看
    print("除数不能为零")
except :
    print("出错了")

输出:

除数不能为零
————————————————————————————————————————————————————————————————————————————————————————————————————————————
#如果b = y
出错了

Tips

以下输出结果正确的是
a = 0 
b = 1
if (a > 0) or (b / a > 2) :
    print("yes")
else :
    print("no")
————————————————————————————————————————————————————————————————————————————————————————————————————————————
A. ZeroDivisionError: division by zero							B.yes
C.no															D.不会报错
正确答案A			#程序在b / a时就会停止

Tips new

增补

#finally表示无论是否异常都执行
try :
    f = open("test.txt","r") #可能发生异常的语句
except Exception as e :
    f = open("test.txt","w") #出现异常准备的手段
else :
    print("没有异常") #未出现异常手段
finally :
    f.close() #有没有异常都要执行的语句

异常具有传递性

def a():
    print("111")
def b() :
    try :
        a()
    except Exception as e :
        print(e)

函数基础

学习内容

  1. 函数的定义(声明)
  2. 函数的使用

函数的定义(声明)

  • 降低编程难度
  • 增加代码复用

def <函数名> (<参数列表>) :

<函数体>

return<返回值>

eg;

def an() :		#an()是自定义函数,比如可以写成weixin()
    a = 1
    b = 0
    while a <= 100 :
        b += a
        a += 1
    print(b)
an()			#调用an()函数
an()

输出

5050
5050
def an(a,b) :		#(a,b)为定义的参数
    print(a + b)
an(3,1)				#将参数ab赋值为3,1
an(23,12)

输出

4
35
def an(a,b) :
    return a + b		#返回a + b的值给an()
bn = an(2,3)				#可以理解为bn = 5
print(bn)

输出

5
def an(a,b) :
    return b,a
print(type(an(3,2)))
c,d = an(3,1)
print(c)
print(d)

输出

<class 'tuple'>			#元组数据类型,以后再说
1
3

Tips

下列代码输出结果是
def an(a,b) :
    a *= b
    return a
s = an(2.5)
print(s)
A.20							B.10
C.1								D.40
正确答案B			#return的值谁调用给谁

函数参数与返回值

学习内容

  1. 参数的传递
  2. 不同场景如何使用参数与返回值
  3. 可选参数

参数的传递

形式参数:简称“形参”,函数定义(声明)时使用的参数

实际参数:简称“实参”,函数被调用时实际传入的参数

eg:

def an(a,b) :		#a,b是形参
    print(a,b)
an(4,2)				#4,2是实参
def an(a) :			
    a = 5
m = 12
an(m)
print(m)
	'''
	这里第四行an(m)的顺序是:m=12,an(a)=an(m),a=12,然后a又=5,所以输出了a=5,这就是值(value)传递(将m的值传递给a,然后a在函数中又被赋值5,最后输出5)
	'''

输出:

5
12

不同场景如何使用参数与返回值

  • 无参数,无返回值
  • 有参数,无返回值
  • 无参数,有返回值
  • 有参数,有返回值

eg:

#输出1-100之间的和
#无参数,无返回值
def an() :
    a = 1
    b = 0
    while a <=100 :
        b += a
        a += 1
        print(b)
an() 
————————————————————————————————————————————————————————————————————————————————————————————————————————————
5050

eg:

#输出1-100之间的和,并返回
#无参数,有返回值
def an() :
    a = 1
    b = 0
    while a <=100 :
        b += a
        a += 1
    return b		#谁调用return赋值给谁
print(an())
____________________________________________________________________________________________________________
5050

eg:

#实现传入一个成绩,判断该成绩是否及格,并输出“及格”或“不及格”
#有参数,无返回值
def an(a) :
    if a >= 60 :
        print("及格")
    else :
        print("不及格")
an(69)
————————————————————————————————————————————————————————————————————————————————————————————————————————————
及格

eg:

#实现传入一个成绩,判断该成绩是否及格,如果及格返回True,否则返回False
#有参数,有返回值
def an(d) :
    if d >= 60 :
        return True
    else :
        return False
an(43)
____________________________________________________________________________________________________________
False

可选参数

def <函数名> (<非可选参数>,<可选参数>=<默认值>) :

<函数体>

return<返回值列表>

eg:

#声明一个函数,可以计算两个数相加的和,默认第二个数为5,也可以传入参数改变
def an(a,b=5) :
    print(a + b)
an(10)
an(10,2)
____________________________________________________________________________________________________________
15
12

Tips new

增补

#传参
def a(b) :
    a1 = b(1,2)
    print(a1)
def b(x,y) :
    return x + y
a(b)

lambda函数定义匿名函数,无名称,只可以临时使用一次

语法定义:

lambda 传入参数:函数体(一行代码)

  • lambda是关键字,表示匿名函数
  • 传入参数表示匿名函数的形式参数,如x,y表示接收2个形式参数
  • 函数体,就是函数的执行逻辑,要注意:只能写一行,无法写多行代码
def a(b) :
    a1 = b(1,2)
    print(a1)
a(lambda x,y : x + y) #无法重复使用

函数变量的作用域

学习内容

  • 局部变量
  • 全局变量

局部变量

在函数内部定义的变量,仅在内部生效,当函数退出时变量将不存在

全局变量

  • 在函数之外定义的变量,在程序执行过程有效

  • 全局变量在函数内部使用时,需要提前使用保留字global声明,

    语法如下:

    global<全局变量>

eg:

def an(a,b) :		#a,b为局部变量
    a = 1
    b = 2
    c = a + b
    print(c)
————————————————————————————————————————————————————————————————————————————————————————————————————————————
3
c = 10				#c为全局变量
def an(a,b) :		#a,b为局部变量
    c = a + b
    print(c)
an(3,1)
print(c)
____________________________________________________________________________________________________________
4
10
c = 10				#c为全局变量
def an(a,b) :		#a,b为局部变量
    global c		#调用外部变量c
    print(a + b)
    print(c)
an(3,1)
print(c)
____________________________________________________________________________________________________________
4
10
10

print()函数

输出不换行的方法

print(<待输出的内容>, end="<增加输出的结尾>”)

eg:

a = 12
print(a,end="")
print(a)
____________________________________________________________________________________________________________
1212
____________________________________________________________________________________________________________
a = 12
print(a,end="#")
print(a)
____________________________________________________________________________________________________________
12#12

只可意会不可言语🤗

如果不写end,print默认回车

实用的字符串操作符

学习内容

  • 字符串操作符:+、*、in

字符串操作符

运算符 举例 描述
+ x + y 字符串x与字符串相连
* x * y 复制y次的字符串x
in x in y 如果x是y的子串,返回True,否则返回False

x in y 可以理解为x是y的子集

eg:

a = "Hello"
b = "World"
print(a + b)
print(a * 3)
print("an" in b)
print("or" in b)
____________________________________________________________________________________________________________
HelloWorld
HelloHelloHello
False
True

字符串索引与切片

学习内容

  • 字符串索引
  • 字符串切片
  • for 循环

字符串索引

  • 索引用来表示字符串中字符所在的位置
  • 基于位置,可以快速找到其对应的字符
  • 如果一个字符中有n个字符,那么索引的取值范围是0**~**n-1

<字符串或字符串变量>[索引]

eg:

a = "Hello World"
print(a[0])
print(a[5])
____________________________________________________________________________________________________________
H
				#编程中从左到右是从0开始数而不是1,空格也站一个字符

字符切片

  • 使用切片可以获取字符串指定索引区间的字符

<字符串或字符串变量>[开始索引:结束索引:步长]

Tips:所有字符都必须用英文字符

eg:

a = "Hello world"
print(a[1:8])
print(a[1:8:2])
____________________________________________________________________________________________________________
ello wo				#此处没包括r可以理解为左闭右开区间[e,r)
el o				#步长为2可以理解为e(l)l(o) (w)o,每当数到第二个字符时跳过并输出第三个数字
____________________________________________________________________________________________________________
print(a[1:6])				#从字符串a中取从第一个位置到第六个位置的字符串,不包含第六个字符
print(a[:8])				#从字符串a中取从第零个位置到第八个位置的字符串,不包含第八个
pirnt(a[1:])				#从字符串a中取从第一个到最后一个位置的字符串
print(a[:])					#取全部字符串
print(a[:-1])				#逆向排列

for循环

可迭代对象:如字符串,列表,元组,字典等可以用来遍历循环的数据。

for <循环变量> in <可迭代对象> :

<循环体>

eg:

a = "Hello world"
for an in a :
    print(an)
____________________________________________________________________________________________________________
H
e
l
l
o

w
o
r
l
d

可以想象成变量a中有11个字符,for每执行一次跳到下一个字符,可以将print(an)改为print(a)输出试试,就好理解了

下面输出的代码是
for s in "HelloWorld"
	  if s == "W" :
		   continue
	  print(s,end = "")
A:Helloorld				B:Hello
C:World					D:HelloWorld
答案A				#continue为跳过本次循环,跳过输出W
————————————————————————————————————————————————————————————————————————————————————————————————————————————
下面输出的代码是
for s in "HelloWorld"
	  if s == "W" :
		   break
	  print(s,end = "")
A:Helloorld				B:Hello
C:World					D:HelloWorld
答案B				#break为跳出循环,相当于结束循环
————————————————————————————————————————————————————————————————————————————————————————————————————————————
下面输出的结果是
for i in "Python" :
    print(i,end = " ")
A:P yt h o n				B:Python
C:P y t h o n				D:p,y,t,h,o,n
答案C

实用字符串常用函数

学习内容

  • 字符串常用函数

字符串常用函数

函数 描述
len(x) 返回字符串x的长度,也可返回其他组合数据类型的元素个数
str(x) 返回任意类型x所对应的字符串形式
chr(x) 返回Unicode编码对应的单个字符
ord(x) 返回单字符x表示的Unicode编码
hex(x) 返回整数x对应十六进制数的小写形式字符串
oct(x) 返回整数X对应的八进制数的小写形式字符串

Unicode编码:用16位二进制表示一个字符,Unicode不是一套新编码,是一套字符集

a = "HelloWorld"
print(lex(a))
b = 1234
print(type(str(b)))
print(chr(97))
print(ord("a"))
print(hex(12))
print(oct(12))
____________________________________________________________________________________________________________
10
<class 'str'>
a
97
0xc
0o14

0x表示16进制,0o表示八进制,0b表示二进制

字符串常用处理方法

方法 描述
str.lower() 返回字符串str的副本,全部字符小写
str.upper() 返回字符串str的副本,全部字符大写
str.split(sep=None) 返回一个列表,由str根据sep被分割的部分构成,省略sep默认空格分隔
str.count(sub) 返回sub字串出现的次数
str.replace(old,new) 返回字符串str的副本,所有old子串被替换为new
str.center(width,filchar) 字符串居中函数,filchar函数可选
str.strip() 从字符串str中去掉在其左侧和右侧chars中列出的字符
str.join(iter) 将iter变量的每一个元素后增加一个str字符串
a = "HOW ARE YOU"
print(a.lower())
a1 = "i'm fine"
print(a1.upper())
b = "魏鑫-是-我儿"
print(b.split(sep="-"))		#可省略sep,以下示例皆可参照此注释
b1 = "asd123bdfksjasdekjasdwenqasd"
print(b1.count("asd"))
c = "Just do it"
print(c.replace("Just","We"))
c1 = "升天"
print(c1.center(6,"+"))
print(c1.center(10))
print(c1.center(2))			#返回长度小于本身长度时,返回原来内容
d = "  --下地--  "
print(d.strip())
print(d.strip(" -"))
print(d.strip("--"))		#左右没有的不会返回修改的字符串
d1 = "python"
print(",".join(d1))			#只可意会不可言语
###输出结果自己放到IDE里跑###

超纲内容(不代表考不到)

# capitalize()				#将字符串的首字母大写
a = "hello world grou up"
print(a.capitalize())
# index(sub,begin,end)		#返回sub在字符串当中第一次出现的位置,如果没有,报错
# find(sub,begin,end)		#返回sub在字符串当中第一次出现的位置,如果没有,返回-1
b = "God help those who stand in our way."
print(b.index("o"))			#这里o换成x在IDE里跑一边,终端里的那个就是报错
print(b.find("o"))
print(b.index("o",10,18))
print(b.find("o",18,25))

Tips

下面代码输出结果正确的是
s1 = "The python language is a scripting language"
s1.replace("scripting","general")
print(s1)
A:The python language is a scripting language
B:The python language is a replace language
C:The,python,language,is,a,scripting,language
D:NULL
正确答案A
s1 = "The python language is a scripting language"
s2 = s1.replace("scripting","general")
print(s2)
A:The python language is a scripting language
B:The python language is a replace language
C:The,python,language,is,a,scripting,language
D:NULL
正确答案B
下面代码输出结果正确的是
s = "The python language is a cross platform language"
print(s.find("language",30))
A:11
B:40
C:10
D:系统出错
正确答案B
下面代码的输出结果是:
s ="The python language is a multimodel language."
print(s:split(''))
A:p['The','python',"language','is','a','multimodel','language']
B:Thepythonlanguageisamultimodellanguage.
C:The python language is a multimodel language.
D:系统报错
正确答案:A
下面代码的输出结果是:
a = "alex"
b = a.capitalize()
print(a, end=",")
print(b)
A. alex,Alex
B. Alex,Alex
C. alex,ALEX
D.ALEX,alex
正确答案A
6.下面代码的输出结果是
str1="mysqlsqlserverPostgrelsQL"
str2 ="sql"
ncount =strl.count(str210)			#10代表在第10位开始计数
print(ncount)
A.3
C.4
B.2
D.0
正确答案D

格式化输出

学习内容

  • format() 方法的基本使用
  • format() 方法的基本控制

format()方法的基本使用

<模板字符串>.format(<参数列表>)

模板字符串是一个由字符串和槽组成的字符串,用来控制字符串和变量之间的显示效果。

槽用{}表示,与format()中的参数列表对应。

print("{}说:明天考试,完啦".format("魏鑫"))
print("{}说:明天考试,{},完啦".format("魏鑫","没复习"))
print("{0}说:明天考试,{1},完啦".format("魏鑫","没复习"))
print("{1}说:明天考试,{0},完啦".format("魏鑫","没复习"))
print("{0}说:明天考试,{0},完啦".format("魏鑫"))
###自己去IDE里跑,以下eg全不写输出结果###

format()方法的格式控制

{<参数序号>:<格式控制标记>}

<填充> <对齐> <宽度> <,> <精度> <类型>
引导符号 用于填充单个字符 <左对齐
>右对齐
^居中对齐
槽的设定输出宽度 数字的千位分隔符适用于整数和浮点数 浮点数小数部分的精度或字符串的最大输出长度 整数类型b,c,d,o,x,X
浮点数类型
e,E,f,%
a = "升天"
print("{:+^15}".format(a))
a1 = "+"
print("{0:{1}^{2}}".format(a,a1,23))
print("{:{1}{2}{3}}".format(a,"+","^",23))
print("{:+^24,}".format(2345465766))
print("{:.3e}".format(3.1415926987952254))
print("{:,.2}".format(13153.1415))
print("{:,.2f}".format(13153.1415))
'''
b:整数二进制形式
c:输出整数的Unicode字符
d:整数十进制形式
x:整数小写十六进制形式
X:整数大写十六进制形式
'''
print("{:+^23b}".format(1234))
print("{:+^23c}".format(1234))
print("{:+^23d}".format(134))
print("{:+^23x}".format(1234))
print("{:+^23X}".format(1234))
'''
e:浮点数对应的小写字母e的指数形式
E:浮点数对应的大写字母E的指数形式
f:标准浮点数
%:输出浮点数的百分比形式
'''
print("{:_^23e}".format(3.1415926))
print("{:_^23E}".format(3.1415926))
print("{:_^23f}".format(3.1415926))
print("{:_^23%}".format(3.1415926))

Tips

下面代码的输出结果是
print("{1}:{0:.6f}".format(3.1415926, "pi"))
A. pi:3.141593
B.3.141593:pi
C.3.14159:pi
D. pi:3.14159
正确答案A

Tips new

增补

在Python中,formatf字符串(也称为格式化字符串字面量)都用于格式化字符串,但它们有一些关键的区别:

  1. format方法
    • 使用大括号{}作为占位符。
    • 可以按顺序或通过索引指定要插入的值。
    • 支持多种格式化选项,如宽度、精度、填充字符、对齐方式等。
    • 可以用于任何类型的字符串,不仅限于格式化数字。
    • 示例:"{:.2f}".format(3.14159) 会输出 3.14,保留两位小数。
  2. f字符串
    • 从Python 3.6开始引入。
    • 使用前缀fF,并且在大括号{}中直接包含变量名或表达式。
    • 更直观和易于阅读,特别是当涉及到多个变量时。
    • 直接在字符串中嵌入表达式,使得代码更简洁。
    • 支持所有的format方法格式化选项,并且可以通过冒号:后跟格式规范来指定。
    • 示例:f"{3.14159:.2f}" 也会输出 3.14,保留两位小数。

f字符串通常更受欢迎,因为它们提供了一种更快、更易读、更简洁的格式化字符串的方式。它们允许直接在字符串中嵌入表达式,这使得代码更清晰,尤其是在处理多个变量时。此外,f字符串在性能上通常也优于format方法,因为它们在编译时就被处理,而不是在运行时。

a = 1
print("a是{}".format(a))
print(f"a是{a:+^5}")

列表

学习内容—组合数据类型

  • 集合类型
  • 序列类型
  • 映射类型

集合类型-set

  • python中的集合类型与数学中的集合一致
  • 集合用来存储无序且不重复的数据
  • 集合中的数据类型只能是不可变的数据类型,如:整数、浮点数、字符串、元组等
  • 相比较而言,列表、字典、和集合类型本身都是可变数据类型

eg: s = {“Hello world”,123,3.14,True}

s = {123,"abd","abd"}
print(s)
print(type(s))

集合类型的操作符

操作符 描述
s - t 返回一个新集合,包括在集合s不在集合t中的元素
s & t 返回一个新集合,包括同时在集合s和集合t中的元素
s ^ t 返回一个新集合,包括集合s和t中非共同元素
s | t 返回一个新集合,包括集合s和t所有元素
s={123,43,12,45, 34, 21}
t={123,43,12,76,453,346}
#差集
print(s-t)
# 交集
print(s & t)
# 补集
print(s ^ t)
# 并集
print(s | t)

集合类型常用操作函数与方法

函数或方法 描述
s.add(x) 如果数据项x不在集合s,将x添加到s
s.remove(x) 如果x在集合s中,移除x,反之产生KeyERROR报错
s.clear() 清除集合s中所有元素
len(s) 返回s中元素个数
x in s 如果x在集合s中,返回True,反之返回False
x not s 如果x不在集合s中,返回True,反之返回False
s={123,345,3.14,5.25}
print(len(s))
print(123 in s)
print(123 not in s)
s.add(124)
print(s)
s.add(123)
print(s)
s.remove(123)
print(s)
s.clear()
print(s)

空集的创建

s = set()
s = set({})

序列类型

  • 序列类型用来存储有序并且可以重复的数据,分别为以下两种数据类型:

列表(list)

元组(tuple)

列表类型—列表的定义

  • 列表类型使用[]表示

ls = [123,123,34235,23541235]

ls = [1231233.14,"abc","abc”]
print(ls)
print(type(ls))

列表类型-列表索引

  • 索引用来表示列表中元素的所在位置
  • 基于位置,可以快速找到其对应的列表元素

如果一个列表中有 n 个字符,那么索引的取值范围是 0~n-1 <列表或列表变量>[索引]

1s=[123,123,3.14,"abc","abc"]
print(ls)
print(type(ls))
print(ls[0])
print(ls[::-1])
print(ls[1:3])

列表类型-列表的切片

  • 使用切片可以获取列表指定索引区间的字符

<列表或列表变量>[开始索引:结束索引]

<列表或列表变量>[开始索引:结束索引:步长]

l2=[123,234,[12,1,45][14,16]]	#可套娃
print(l2)
print(l2[2][2])					#套娃查找

列表类型-常用的操作符与函数

函数或方法 描述
x in s 如果x是s的元素,返回True,反之返回False
x not in s 如果x不是s的元素,返回True,反正返回False
len(s) 返回列表s的元素个数
min(s) 返回列表s的最小元素
max(s) 返回列表s的最大元素
ls=[1233214563.14]
print(len(1s))
print(123 in 1s)
print(123 not in ls)
print(min(ls))				#如果列表里有不能跟其他元素比较大小的元素,比如加一个"abd",报错
print(max(ls))
strls = ["aa","bb","ab","ac","da"]
print(min(strls))
print(max(strls))

列表类型-常用操作方法

函数或方法 描述
ls.append(x) 在列表末尾处添加一个新元素x
ls.insert(i,x) 在列表i位添加元素x
ls.clear() 清除列表所有元素
ls.pop(i) 删除列表位上的元素
ls.remove(x) 将列表中第一个出现的x元素删除
ls.reverse() 将列表元素反转
ls.index(x) 列表中第一个x元素出现的位置
ls.count(x) 列表x元素出现的次数
ls.copy() 返回一个新列表,复制列表ls中所有元素
ls = []
1s.append(123)
1s.append("Hel1o”)
print(ls)
ls.insert(1,"world")
print(ls)
#1s.pop(0)		#pop是根据位置删除,remove是根据元素	
ls.remove(123)	#如果这里删除1234,会报错,因为没有这元素
ls=[123,234,3.14,65,"abc","helloworld"]
ls.reverse()
ls = ls[::-1]
print(ls)
ls=[123,123,3.14,65,"abc","helloworld"]
#ls.reverse()
print(ls)
print(ls.index(123))
print(ls.count(123))
ls.clear()
print(ls)

易错区

#ls.copy()的运用范围
a = [123,234,45645]
b = a
b[1] = 3.14
print(a)		#自己跑一边,看看是不是跟自己想的不一样

这里涉及到一个知识点:值类型(不可变类型)和引用类型(可变类型),这里列表就是一个可变类型。在python编程过程中产生的一些数据存储在内存中分两个存放地存储(栈内存)(堆内存)。这题中,变量a和b存放在栈内存,而它们的列表元素存放在堆内存。b=a也就是b引用了a的元素,下面b又修改了在堆内存里的列表中的元素,所以打印a也就是修改后的列表而非原来的列表

image-20240827215730351

#ls.copy()的运用范围
a = [123,234,45645]
b = a.copy()
b[1] = 3.14
print(a)
print(b)

元组类型-元组的定义

  • 元组一旦定义就不能修改。

  • 元组类型使用()来表示,例:

t = (123,3.14,123,“abc”)

元组类型-元组的索引与切片

  • 与原列表一致
函数或方法 描述
x in s 如果x是s的元素,返回True,反之返回False
x not in s 如果x不是s的元素,返回True,反正返回False
len(s) 返回元组s的元素个数
min(s) 返回元组s的最小元素
max(s) 返回元组s的最大元素
ls.index(x) 元组中第一个x元素出现的位置
ls.count(x) 元组中x元素出现的次数
t=(123,3.14,123,"abc")
print(t)
print(type(t))
print(t[0:3])			#跟列表一样,就是列表可以修改而元组不能被修改

Tips

关于 Python的元组类型以下选项中描述错误的是
A.元组一旦创建就不能被修改
B.Python中元组采用逗号和圆括号(可选)来表示
C.元组中元素不可以是不同类型
D.一个元组可以作为另一个元组的元素可以采用多级索引获取信息
正确答案C
S和T是两个集合对于S&T的描述正确的是
A.S和T的并运算包括在集合S和T中的所有元素
B.S和T的差运算包括在集合S但不在T中的元素
c.S和T的交运算包括同时在集合S和T中的元素
D.S和T的补运算包括集合S和T中的非相同元素
正确答案c
以下选项中不是具体的 Python 序列类型的是
A.字符串类型 	#可以用索引,所以也算序列
B.元组类型
C.数组类型		#没这玩意儿
D.列表类型
正确答案C
对于序列s能够返回序列s中第i到j以k为步长的元素子序列的表达是
A.s[i,j,k]
B.s[i;j;k]
c.s[i:j:k]
D.s(ij,k)
正确答案c
设序列s以下选项中对 max(s)的描述正确的是
A.一定能够返回序列s的最大元素
B.返回序列s的最大元素但要求s中元素之间可比较
C.返回序列s的最大元素如果有多个相同则返回一个元组类型
D.返回序列s的最大元素如果有多个相同则返回一个列表类型
正确答案b
元组变量t=("cat","dog","tiger","human"),t[:-1]的结果是
A. ('human','tiger','dog','cat')
B. ['human','tiger','dog','cat']
c. {'human','tiger','dog','cat'}\
d.报错
正确答案A
关于Python的列表以下选项中描述错误的是
A.Python列表是一个可以修改数据项的序列类型			#列表与元组!
B.Python列表是包含0个或者多个对象引用的有序类型
C.Python列表的长度不可变
D.Python列表用中括号[]表示
正确答案c
下面代码的输出结果是
s =["seashell","gold","pink","brown","purple","tomato" ]
print(s[1:4:2])
A. ['gold','brown']
B. ['gold','pink','brown']
c. ['gold',' pink']
D. ['gold','pink','brown','purple','tomato']
正确答案a
下面代码的输出结果是
s=["seashe]l","gold","pink" ,"brown","purple","tomato" ]
print(s[4:])
A. ['purple','tomato']
B.['purple']
c.['seashell','gold','pink','brown']
D. ['gold','pink','brown','purple','tomato']
正确答案a
下面代码的输出结果是
s =["seashell","gold","pink" ,"brown","purple","tomato"]
print(len(s)min(s)max(s))
A.6 seashell gold
B.6 brown tomato			#字符串比较大小按照ascll码进行,先从第一给字符比较,例如:z>a,Z<a,za>aa
C.5 pink brown
D.5 purple tomato
正确答案b
下面程序的输出结果是
lt=['alice','kate','john']
ls = lt
lt.clear()
print(ls)
A. ['alex','kate','john']
B.变量未定义的错误
c.[]
D.'rain','kate','john'
正确答案c
下面代码的输出结果是
li = ['alex','eric','rain']
s="_".join(li)
print(s)
A. _alex eric rain
B.alex_eric_rain_
C.alex_eric_rain
D._alex_eric_rain_
正确答案c

补充:for循环可以输出python中可迭代性的可迭代对象(列表元组集合等)

可迭代对象:能挨个输出值的东西

s = {123,2345,54764}
for i in s :	#每一次循环将s里的元素去出赋值给i(遍历循环)
    print(i)

Tips new

增补

#*args和**kwargs的本体是*和**,args和kwargs只是行业标准,可以改成其他,*为列表,**为元组
def a(*args) :
    print(f"args的类型为{type(args)},内容是{args}")
a(1,2,3,"aa")
def b(**kwargs) :
    print(f"kwargs的类型是{type(kwargs)},内容是{kwargs}")
b(name = "wx",age = 12,gender = "man" )

字典

学习目标

  • 字典的定义
  • 字典的索引
  • 字典的操作

字典类型-字典的定义

  • 字典类型数据主要以“键值对”的形式存储,类似汉语字典的目录形式。
  • 具体定义格式如下:

{<键1>:<值1>,<键2>:<值2>,<键n>:<值n>}

d = {"212212":"魏鑫","341234":"刘思隆","666666":"魏大豪"}
print(type(d))

字典类型-字典的索引

  • 通过键来查询键对应的值,类似查字典

    <字典变量>[索引(键)]

d = {"212212":"魏鑫","341234":"刘思隆","666666":"魏大豪"}
print(d["666666"])
print(d["212212"])
print(d["341234"]) 
d["666666"] = "杨学斌"
d["212212"] = "赵梓坤"
d["341234"] = "卢仕森"
print(d["666666"])
print(d["212212"])
print(d["341234"]) 
d["123"] = "邢海涛"
print(d["123"])

字典类型-常用操作函数

函数或方法 描述
len(d) 返回字典d的元素个数
min(d) 返回字典d键的最小值(只比较key)
max(d) 返回字典d键的最大值
d = {"212212":"魏鑫","341234":"刘思隆","666666":"魏大豪"}
print(len(d))
print(min(d))
print(max(d))			#可以试试for循环遍历字典d
print("212212" in d)
print("魏鑫" in d) 

字典类型-常用操作方法

函数或方法 描述
d.keys() 返回所有的键信息
d.values() 返回所有的值信息
d.items() 返回所有的键值对
d.get(key,default) 键存在则返回相对值,反之返回default
d.pop(key,default) 键存在则删除对应键值对,并返回对应值,反之返回default
d.popitem() 随机从字典中取出一个键值对,以元组(key,value)形式返回,同时将该键值对从字典删除
d.clear() 清除字典里所有键值对
d = {"212212":"魏鑫","341234":"刘思隆","666666":"魏大豪"}
print(d.keys())
print(d.values())
print(d.items())
#书接上回
for i in d :
    print(d[i])			#因为i是d的键,若想输出值,就让for每次打印d的值
for n in d.values() :
    print(d)
for j in d.items() :
    print(j[0],j[1])
for z,q in d.items() :
    print(z,q)
d = {"212212":"魏鑫","341234":"刘思隆","666666":"魏大豪"}
print(d.get("666666"))
print(d.get("666661","查无此人"))		#基于索引查询时没有相对应的键会报错而不是返回值
print(d.get("666166"))
print(d.pop("666666"))
print(d.pop("666666","查无此人"))
print(d.popitem())

Tips

以下选项中不能生成一个空字典的是
A.{}
B.dict()
c.dict({})
D.{[]}
正确答案D
给定字典d以下选项中对d.keys()的描述正确的是
A.返回一种dict_keys类型包括字典d中所有键
B.返回一个列表类型包括字典d中所有键
C.返回一个元组类型包括字典d中所有键
D.返回一个集合类型包括字典d中所有键
正确答案A
给定字典d以下选项中对d.values()的描述正确的是
A.返回一种dict_values类型包括字典d中所有值
B.返回一个列表类型包括字典d中所有值
C.返回一个元组类型包括字典d中所有值
D.返回一个集合类型包括字典d中所有值
正确答案A
给定字典d以下选项中对d.items()的描述正确的是
A.返回一种dict_items类型包括字典d中所有的键值对
B.返回一个列表类型每个元素是一个二元元组包括字典d中所有键值对
C.返回一个元组类型每个元素是一个二元元组包括字典d中所有键值对
D.返回一个集合类型每个元素是一个二元元组包括字典d中所有键值对
正确答案a			#返回的整体是dict_items类型,整体中每一个元素是元组
字典d={'abc':123,'def';456,'ghi':789},len(d)的结果是
A:3
B:6
C:9
D:12
正确答案a
给定字典d以下选项中对d.get(x,y)的描述正确的是
A.返回字典d中键值对为x:y的值
B.返回字典d中键为x的值如果不存在则返回y
C.返回字典d中键为x的值如果不存在则返回空
D.返回字典d中键为y的值如果不存在则返回x
正确答案b
给定字典d以下选项中对x in d的描述正确的是
A.x是一个二元元组判断x是否是字典d中的键值对
B.判断x是否是字典d中的键
C.判断x是否是字典d中的值
D.判断x是否是在字典d中以键或值方式存在
正确答案b
关于Python字典以下选项中描述错误的是
A.Python字典是包含0个或多个键值对没有长度限制可以根据索引内容
B.Python语言通过字典实现映射
C.字典中对某个键值的修改可以采用中括号[]访问和赋值实现
D.如果想保持一个集合中元素的顺序可以使用字典类型
正确答案d
下面代码的输出结果是
d = {'a':1, 'b':2l 'c':3}
print(d['c'])
A.1
B.2
c3
D. {'c':3}
正确答案C
 

文件的基本操作

学习内容

  • 文件的类型
  • 文件的操作

文件的类型

  • 文本文件

一般由单一特定编码的字符组成,如Unicode 编码,内容容易统一展示和阅读,由于文本文件存在编码,可以看作是存储在磁盘上的长字符串,如一个txt格式的文本文件。

  • 二进制文件

直接由0和1组成,没有统一的字符编码,文件内部数据的组织格式与文件用途有关。如png格式的图片文件、mkv格式的视频文件,

区别:是否有统一的字符编码

文件的操作

  • 打开文件(open())-> 读/写 -> 关闭文件(close())

文件的操作-打开文件

<变量名> = open(<文件路径及文件名>,<打开模式>)

打开模式 描述
“r” 只读模式,如果文件不存在,返回异常FileNotfoundError,默认值
“w” 覆盖写模式,如果文件不存在则创建文件,存在则完全覆盖文件
“x” 创建写模式,如果文件不存在则创建,存在则报错
“a” 追加写模式,如果文件不存在则创建,存在则在原文件最后追加内容
“b” 二进制文件模式
“t” 文本文件模式,默认值
“+” 与r/w/x/a一同使用,在原功能基础上增加功能

文件的操作-常用组合

  • 以文本方式只读打开一个文件,读入后不能对文件进行修改:r
  • 以文本方式可读写地打开一个文件,可以读入并修改文件:r+
  • 以文本方式打开一个空文件,准备写入一批内容,并保存为新文件:w
  • 以文本方式打开一个空文件或已有文件,追加形式写入一批内容,更新原文件:a+
  • 以二进制方式只读打开一个文件,读入后不能对文件进行修改:rb

文件的操作-读

方法 描述
f.read(size) 从文件中读入整个文件内容,参数可选, 如果给出,读入前size长度字符串或字节流
f.readline(size) 从文件中读入一行内容,参数可选,如果给出,读入前size长度字符串或字节流
f.readlines(hint) 从文件中读取所有行,以每行为元素形成一个列表,参数可选,如果给出,读取hint行
f.seek(offset) 改变当前文件操作指针位置,offset的值:0为文件开头,1为当前位置开始,2为文件末尾
#以下内容需自己在文件夹创建文本文件
i = open("1.txt","rt",encoding="UTF-8")	   #打开1.txt文件,以“rt”模式打开,转换编码为UTF-8(python用的是unicode编码)
d = i.read()							   #将i的值赋值到d
i.close()								   #关闭i
print(d)

这里文件路径使用相对路径与绝对路径,不介绍俩路径

#在python中不得随便用反斜杠“\”
#\n 换行
#\b 退格
#\t tab
#\\ \
print("hello\nworld")			#注意这里的\n
i = open("D:\\text\1.txt","rt",encoding="UTF-8")	   #打开1.txt文件,以“rt”模式打开,转换编码为UTF-8(python用的是unicode编码)
d = i.read()							   #将i的值赋值到d
i.close()								   #关闭i
print(d)

image-20240829170340512

i = open("D:\\text\1.txt","rt",encoding="UTF-8")	   #打开1.txt文件,以“rt”模式打开,转换编码为UTF-8(python用的是unicode编码)
d = i.read(7)							   #将i的值(7个字符)赋值到d
i.close()								   #关闭i
print(d)

image-20240829170259686

i = open("D:\\text\1.txt","rb")	   #打开1.txt文件,以“rb”模式打开
d = i.read(7)							   #将i的值(7个字符)赋值到d
i.close()								   #关闭i
print(d)

image-20240829170626327

rd将字符转换成二进制后又将二进制字节流转换成16进制输出了

i = open("D:\\text\1.txt","rt",encoding="UTF-8")	   #打开1.txt文件,以“rt”模式打开,转换编码为UTF-8(python用的是unicode编码)
d = i.readline(7)							   #将i的值(7个字符)赋值到d
i.close()								   #关闭i
print(d)

image-20240829171549622

i = open("D:\\text\1.txt","rt",encoding="UTF-8")	   #打开1.txt文件,以“rt”模式打开,转换编码为UTF-8(python用的是unicode编码)
d = i.readline()							   #将i的值赋值到d
print(d)
d = i.readline()							   #将i的值赋值到d
print(d)
i.close()										#关闭i

image-20240829171810741

解答:计算机里输入时闪烁的光标叫指针,当读取第一行时指针移动到第一行最后,再读取一行时就会自动换到第二行了。(参照栈内存和堆内存)输出第二行时会多一行空的,这是因为计算机里每一次换行都有一个换行标记”\n“,换行标记隐藏不可见,回到上一句话,“当读取第一行时指针移动到第一行的最后一行”,这里指针只是移动到我们看得到的文字的后面,在文字最后还有一个看不见的\n,所以输出第二行时也自然带上了\n了

i = open("D:\\text\1.txt","rt",encoding="UTF-8")	   
d = i.readlines()							   #将i的值赋值到d
print(d)
i.close()										#关闭i

image-20240829180257278

这里如果在readlines()里写2只会输出列表的第一个元素,因为hint并不是输出的行数而是最大行数,而且可以理解为取到的字符个数(换行符不算在里面)并且把取到的字符所在的行的内容全部输出

i = open("D:\\text\1.txt","rt",encoding="UTF-8")	  
d = i.read()
print(d)
ls = i.readlines()
print(ls)
i.close()										

image-20240829181153982

这里可以看到列表返回的是空,因为第二行代码已经让指针到文本的最后一行了,再用readlines当然返回空。(栈内存和堆内存,并且第二行代码执行完也没关闭文本文件)可以在第三行上方添加一行f.seek(0)让指针回到文本开始位置,就行

文件的操作-写

方法 描述
f.write(s) 向文件写入一个字符串或字节流
f.writelines(lines) 将一个元素为字符串的列表整体写入文件
cc = open("2.txt","w",encoding="UTF-8")
cc.writelines(["奉命于天,既寿永昌\n","工于谋国,拙于谋身"])
cc.close()
jj = open("2.txt",encoding="UTF-8")
vv = jj.read()
print(vv)
————————————————————————————————————————————————————————————————————————————————————————————————————————————
cc = open("2.txt","w+",encoding="UTF-8")
cc.writelines(["奉命于天,既寿永昌\n","工于谋国,拙于谋身"])
cc.seek(0)
for jj in cc :
    print(jj,end="")
cc.close()

Tips

关于 Python 对文件的处理以下选项中描述错误的是
A.Python 能够以文本和二进制两种方式处理文件
B.Python通过解释器内置的open()函数打开一个文件
C.当文件以文本方式打开时读写按照字节流方式
D.文件使用结束后要用close()方法关闭释放文件的使用授权
正确答案c
以下选项中不是 Python 对文件的读操作方法的是
A.read
B.readline
C.readlines
D.readtext
正确答案D
3.以下选项中不是Python 对文件的打开模式是
A.'r'
B.'w'
C.'b+
D"c"
正确答案D
给出如下代码:
fname = input("请输入要打开的文件:")
fi = open(fname, "r")
for line in fi.readlines():
	print(line)
fi.close()
以下选项中描述错误的是
A.用户输入文件路径以文本文件方式读入文件内容并逐行打印
B.通过 fi.readlines()方法将文件的全部内容读入一个字典fi
C.通过 fi.readlines()方法将文件的全部内容读入一个列表fi
D.上述代码中 fi.readlines()可以优化为fi
正确答案B
a = "D:/python/2.txt"
d = open(a, "r",encoding="UTF-8")
for c in d.readlines() :	#这里d.readlines可以直接写d
    print(c,end="")			#详情参照print函数运用,只可意会不可言语
关于 Python 文件打开模式的描述以下选项中错误的是
A.文本只读模式rt
C.二进制追加写模式 ab
B.文本覆盖写模式 wt
D.二进制创建写模式nb
正确答案D
执行如下代码:
fname = input("请输入要写入的文件:")
fo =open(fname,"w")
ls = ["清明时节雨纷纷,""路上行为欲断魂。""借问酒家何处有?""牧童遥指杏花村。"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
    print(line)
fo.close()
输出结果是
自己跑去ide里看
以下选项中描述错误的是
A.执行代码时从键盘输入清明.txt”,则清明.txt被创建
B.fo.writelines(ls)将元素为字符串的ls列表写入文件
C.fo.seek(0)这行代码可以省略不影响输出效果
D.代码主要功能为向文件写入一个列表类型并打印输出结果
正确答案c
关于 Python 文件的+打开模式以下选项中描述正确的是
A.只读模式
B.覆盖模式
C.追加写模式
D.与r/w/a/x一同使用在原功能基础上增加同时读写功能
正确答案D
以下选项中不是 Python文件处理seek()方法的参数是
A.0
B.-1
C.1
D.2
正确答案B
使用 open()打开一个windows操作系统D盘下的文件以下选项中对路径的表示错误的是
A.D:\\PythonTest\\a.txt
B.D:\PythonTest\a.txt
C.D:/PythonTest/a.txt
D.D://PythonTest//a.txt
正确答案

数据读取与存储

学习内容

  • 一维数据
  • 二维数据

一维数据

  • 一维数据在python中表示形式 (不做解释)
  • 一维数据在文件中存储方式
  • 一维数据的处理
#csv文件为字符分隔值,就是纯文本形式的表格文件,由一堆一维数据组成的二维数据
ls = ["魏鑫","魏大豪","刘思隆"]
a = open("123.csv","w+")
b = ",".join(ls)
a.write(b)
a.close()
a = open("123.csv","r")
b = a.read()
print(b.split(","))

二维数据

  • 二维数据在python中表示形式 (不做解释)
  • 二维数据在文件中存储方式
  • 二维数据的处理
#劳逸结合哦
ls = [
    ["姓名","性别","年龄"],
    ["魏鑫","男","18"],
    ["魏大豪","男","18"],
    ["刘思隆","男","19"],
    ]
print(ls[0])
print(ls[1][2])
for i in ls :
    for c in i :
        print(c)
ls = [
    ["姓名","性别","年龄"],
    ["魏鑫","男","18"],
    ["魏大豪","男","18"],
    ["刘思隆","男","19"],
    ]
a = open("1234.csv","w",encoding="UTF-8")
for b in ls :
    c = ",".join(b) + "\n"
    a.write(c)
a.close()
a = open("1234.csv","r",encoding="UTF-8")
ls = []
for b in a :
    b = b.strip("\n")	#去除换行符
    c = b.split(",")
    ls.append(c)
a.close
print(ls)
a = open
关于 CSV 文件的描述以下选项中错误的是
A.CSV 文件格式是一种通用的相对简单的文件格式应用于程序之间转移表格数据
B.CSV 文件的每一行是一维数据可以使用Python中的列表类型表示
C.CSV 文件通过多种编码表示字符		
D.整个 CSV 文件是一个二维数据
正确答案C 	#只能有一种编码:GBK,Unicode等
关于一维数据存储格式问题以下选项中描述错误的是
A.一维数据可以采用 CSV格式存储
B.一维数据可以采用分号分隔方式存储
C.一维数据可以采用特殊符号@分隔方式存储
D.一维数据可以采用直接相连形成字符串方式存储
正确答案D
二维列表 ls=[[1,2,3],[4,5,6],[7,8,]]以下选项中能获取其中元素5的是
A. Is[1][1]
B. ls[4]
C.ls[-1][-1]
D.ls[-2][-1]
正确答案A
列表 ls=[1,2,3,4,5,6,[7,8,9]]以下选项中描述正确的是
A.ls 可能是一维列表
B.Is 可能是二维列表
C.ls 可能是多维列表
D.ls 可能是高维列表
正确答案A		#别问,问就是不是规整的嵌套列表
以下选项对应的方法可以辅助用于从CSV文件中解析一二维数据的是
A. strip()
B. center()
C.count()
D.format()
正确答案A

python计算生态之模块

学习内容

import …..

from …. import

模块引用

  • import

    import <模块名> as <别名>

  • from … import …

    from <模块名> import <对象,函数>

彩蛋,《Python禅道》

import this

输出结果:

Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren’t special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one– and preferably only one –obvious way to do it. Although that way may not be obvious at first unless you’re Dutch. Now is better than never. Although never is often better than right now. If the implementation is hard to explain, it’s a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea – let’s do more of those

#首先你得先写个py文件定义一个模块,a1.py
def a() :
    print("Hello world")
def an() :
    c = input("输入一个数")
    print(c)
#再切换到另一个py文件
import a1
a1.a()
a1.an() 
from a1 import a
a()
an()	#百分百报错,因为你没有调用an()函数

python提供了各式各样的标准库,在C:\Users\Iota\AppData\Local\Programs\Python\Python312\Lib里。

#调用random库输出随机整数
from random import *	#*表示调用全部
print(randint(1,10))

Tips

下列保留字中哪一项可以在一个py文件中引用另一个模块
A.in
B.input
c.import
D.export
正确答案c

Tips new

增补

#a()模块
def a(x,y):
    print(x + y)
#另一个a()模块
def a(x,y) :
    print(x - y)
#调用两个模块,只会执行最后被调用的同名模块
from 1.py import a()
from 2.py import a()
a()
#__main__函数,当调用模块时不想执行模块中调用的函数时,使用__main__函数可以不运行
#a()模块
    def a(x,y) :
        print(x + y)
    if __name__ == "__main__" : #__name__是内置函数,在模块内会变为__main__以运行,但是在from调用时不会变
        a(1,2)
#调用a()模块
a(2,3)
 #__all__变量,当要调用模块内的部分代码时可用
 #1.py模块
__all__ = ["a"]
def a() :
    print("111")
def b() :
    print("222")
#调用模块
from 1 import *
a()
b()

python中包的创建,导入与导入模块大相径庭,无非写all时在init.py里写罢了,不多赘述(包也就是库啦~)

image-20241027173943920

#srr_util.py代码
def str_reverse(s) :
    return s[::-1]
def substr(s,x,y) :
    return s[x:y]
if __name__ == "__main__" :
    print(str_reverse("hello world"))
    print(substr("hello world",1,5))
#file_util.py代码
def print_file_info(file_name) :
    try :
        f = open(file_name,"r",encoding="UTF-8")
        txt = f.read()
        print("内容为:")
        print(txt)
    except Exception as e :
        print(f"有误,原因为{e}")
    finally :
        f.close()
def append_to_file(flie_name,data) :
    f = open(flie_name,"a",encoding="UTF-8")
    f.write(data)
    f.write("\n")
    f.close()
if __name__ == "__main__" :
    print_file_info("D:\\Code_python\\1.txt")
    append_to_file("D:\\Code_python\\1.txt","www")
#调用my_utils包
from my_utils.str_util import *
from my_utils.file_util import *
str_reverse("hello world")
substr("hello world",1,5)
print_file_info("D:\\Code_python\\1.txt")
append_to_file("D:\\Code_python\\1.txt","\n")

python计算生态之内置函数

学习内容

  • 内置函数

内置函数

函数名 描述
abs(x) x的绝对值。如果x是复数,返回复数的模
divmod(a,b) 返回a和b的商及余数。如divmod(10,3)结果是一个(3,1)
pow(x,y) 返回x的y次幂。如pow(2,pow(2,2))的结果是16
round(n) 四舍五入方式计算n。如round(10.6)的结果是11
#不做过多解释,只写几个小tips
print(abs(1 + 2j))
print(round(4.12324,3))			#3代表保留到第三位
函数名 描述
all(x) 组合类型变量 x中所有元素都为真时返回True,否则返回 False;若x为空,返回 True。
any(x) 组合类型变量 x中任一元素都为真时返回True,否则返回 False;若x为空,返回 False。
reversed(r) 返回组合类型r的逆序形式
sorted(x) 对组合类型进行排序,默认从小到大
sum(x) 对组合数据类型x进行计算求和结果
#组合类型就是列表元组字典等类型
ls = [True,True,123]
ls1 = [True,0]			#非零为正
print(all(ls))
print(all(ls1))
print(any(ls1))
ls2 = [123,12345,546]
print(reversed(ls2))	#它返回的是一个可迭代对象,需要强制转换成列表
print(list(reversed(ls2)))
函数名 描述
eval(s) 计算字符串s作为python表达式的值
exec(s) 计算字符串s作为python语句的值
range(a,b,s) 从a到b(不包含b)以s为步长生成一个序列
ls = "[123,34,5436]"
print(ls)
print(eval(ls))
a = eval(input("输入一个数"))
print(a)
c = 123
d = eval("c")
print(d)		#就想象成啥""都能去掉
exec("a = 1000-7") #同上
for i in range(1,100) :			#打印1到100的数,如果只写100,则会输出0-99,现在输出的是1-99,步长不做解释
    print(i)

Tips

下列函数中不是基本的 Python 内置函数是
A. perf_counter()
B.abs()
C.all()
D.any()
正确答案A
基本的 Python内置函数eval(x)的作用是
A.将x转换成浮点数
B.将整数x转换为十六进制字符串
C.计算字符串x作为 Python 语句的值
D.去掉字符串x最外侧引号当作Python 表达式评估返回其值
正确答案D
基本的 Python内置函数range(a,b,s)的作用是
A.返回组合类型的逆序迭代形式
B.产生一个整数序列从a到b(不含)以s为步长
C.返回a的b 次幂
D.返回a的四舍五入值b表示保留小数的位数
正确答案B

Python标准库之turtle库

学习内容

  • 窗体函数
  • 画笔状态函数
  • 画笔运动函数

窗体函数

turtle.setup(width,height,startx,starty) width:窗口宽度 height:窗口高度 startx:窗口与屏幕左侧距离(单位象素) starty:窗口与屏幕顶部距离(单位象素)

画笔运动函数

函数名 描述
forward(distance) 沿着当前方向前进指定距离
backward(distance) 沿着当前相反方向后退指定距离
right(angle) 向右旋转angle角度
left(angle) 向左旋转angle角度
goto(x,y) 移动到绝对坐标(x,y)处
setx(x) 修改画笔的横坐标到x,纵坐标不变
sety(y) 修改画笔的横坐标到y,横坐标不变
setheading(angle) 设置当前朝向为angle角度
home() 设置当前画笔位置为原点,朝向东

画笔状态函数

函数名 描述
pendown() 放下画笔
penup() 提起画笔,与pendown()配对使用
pensize(width) 设置画笔线条的粗细为指定大小
pencolor() 设置画笔的颜色
color() 设置画笔和填充颜色
begin_fill() 填充图形前,调用该方法
end_fill() 填充图形结束
filling() 返回填充的状态,True为填充,FALSE为未填充
clear() 清空当前窗口,但不改变当前画笔的位置
#注意:此章节必须使用python自带IDE运行,因为vscode不好看画的图
import turtle as t
#前进 forward() fd()
#后退 backward() bk()
t.setup(600,600,10,20)
t.fd(200)
#t.bk(300) 自己给上面注释掉再运行这里
import turtle as t
t.setup(600,600,10,20)
t.fd(100)
t.left(90)
t.fd(100)
t.left(90)
t.fd(100)
t.left(90)
t.fd(100)
t.left(90)#注意画笔方向
import turtle as t
t.setup(600,600,10,20)
for i in range(4) :
    t.fd(100)
    t.left(90)
import turtle as t
t.setup(600,600,10,20)
t.pensize(3)	#pensize也可以写作width,参考HTML
t.pencolor("red") #必须在画画前确定颜色,括号内是以rgb值来确定颜色,范围是0~1,pencolor(1,0.111,0)懂得懂得
for i in range(4) :
    t.fd(100)
    t.left(90)
import turtle as t
t.setup(600,600,10,20)
t.pensize(3)
t.color("red","yellow")
t.begin_fill()
for i in range(4) :
    t.fd(100)
    t.left(90)
t.end_fill()
print(t.filling())
import turtle as t
t.setup(600,600,10,10)
t.fd(200)
t.left(90)
# penup pu() up()
t.penup()
t.fd(20)
t.left(90)
#pendown() pd()	down()
t.pendown()
t.fd(200)
import turtle as t
t.setup(600,600,10,10)
t.circle(60)
#t.circle(60,steps=3)
#t.circle(60,-360)
#自己试,加个t.speed(2)画笔速度就更快
import turtle as t
t.setup(600,600,10, 10)
t.circle(60, steps=6)
t.goto(60,100)
t.setx(120)
t.sety(0)
t.setheading(90)
t.home()
t.dot(30,"red")

python标准库之random库

学习内容

  • radom库

random库

函数名 描述
seed(a =None) 初始化随机数种子,默认值为当前系统时间
random() 生成一个[0.0,1.0)之间的随机小数
randint(a,b) 生成一个[a,b]之间的整数
getrandbits(k) 生成一个 k 比特长度的随机整数
randrange(start,stopl,step]) 生成一个[start,stop)之间以 step 为步长的随机整数
uniform(a,b) 生成一个[a,b]之间的随机小数
choice(seq) 从序列类型(例如列表)中随机返回一个元素
shuffle(seq) 将序列类型中元素随机排列,返回打乱后的序列
sample(pop,k) 从 pop 中随机选取k个元素,以列表类型返回
from random import *
seed(10)
print(random())
print (random())
seed(10)
print(random())
print (random())
#这里告诉我们,种子一样,随机数也一样,没有真正的随机
from random import *
print (random ())
print(randint(1, 10))
print(getrandbits(10))
print (randrange(1,100,2))
print (uniform(5, 10))
ls =[12,34, 45,23, 1,554, 75,3]
print(choice(ls))
shuffle(ls)
print(ls)
print(sample(ls,4))

Tips

random库的seed(a)函数的作用是
A.生成一个[0.0,1.0]之间的随机小数
B.设置初始化随机数种子a
C.生成一个随机整数
D.生成一个k比特长度的随机整数
正确答案B
random库的random.randrange(start,stop[,step])函数的作用是
A.生成一个[start,stop]之间的随机小数
B.从序列类型(例如列表)中随机返回一个元素
C.生成一个[start,stop]之间以step为步数的随机整数
D.将序列类型中元素随机排列返回打乱后的序列
正确答案c
random 库的random.sample(pop,k)函数的作用是
A. pop 类型中随机选取k-1个元素以列表类型返回
B.随机返回一个元素
C.生成一个随机整数
D. pop 中随机选取k个元素以列表类型返回
正确答案D

Python第三方库之pip库

学习内容

  • 第三方库安装
  • pip工具使用

第三方库安装方式

  • pip工具安装
  • 自定义安装
  • 文件安装(扩展名.whl)

pip工具使用

  • pip <命令> <选项>

安装:install 库名

卸载:uninstall 库名

下载:download 库名

查看当前第三方库列表:list

查看某个第三方信息:show

#安装第三方库(网络必须得有代理,或者科学上网,或者找清华镜像站下载)
pip install jieba
python.exe -m pip install --upgrad pip #可选

image-20240831143522056

import jieba
print(jieba.lcut("hello world")) 	#分词

python第三方库之jieba库

学习内容

  • jieba介绍
  • 使用jieba进行分词

jieba介绍

jieba(“结巴”)是 python 中一个重要的第三方也文分词函数库,能够将一段中文文本分割成中文词语的序列,jieba 库需要通过 pip 指令安装。

常用函数

函数名 描述
jieba.lcut(s) 精确模式,返回一个列表类型
jieba.lcut(s,cut_all=True) 全模式,返回一个列表类型
jieba.lcut_for_search(s) 搜索引擎模式,返回一个列表类型
iieba.add_word(w) 向分词词典中增加新词 w
import jieba
ls= jieba.lcut("国家计算机二级考试Python学科")
print(ls)
ls= jieba.lcut("国家计算机二级考试Python学科",cut_all=True)
print(ls)
ls = jieba.lcut_for_search("国家计算机二级考试Python学科")
print(ls)
jieba.add_word("Python学科")
ls = jieba.lcut("国家计算机二级考试Python学科")
print(ls)

Tips

Python中文分词方向的第三方库是
A.SOLAlchemy
B. scikit-learn
C.jieba
D. ptpython
正确答案c

python常见的第三方库

网络爬虫方向

库名 描述
requests 简洁简单的处理http请求
scrapy web获取框架,一个半成品爬虫

数据分析方向

库名 描述
numpy 科学计算库
scipy 在numpy基础上增加很多库函数
pandas 数据处理、数据分析

文本处理方向

库名 描述
pdfminer 读取 pdf数据
openpyxl 处理 Excel 表格
python-docx 处理 word 文档
beautifulsoup4 解析和处理 HTML、XML

数据可视化方向

库名 描述
matplotlib 二维图绘制
TVTK 三维可视化
mayavi 更方便的三维可视化

用户图形界面方向

库名 描述
PyQt5 用户图形界面开发
wxPython 用户图形界面开发
PyGTK 用户图形界面开发

机器学习方向

库名 描述
scikit-learn 机器学习
TensorFlow 人工智能
Theano 深度学习

web开发方向

库名 描述
Django Web框架
Pyramid Web框架
Flask Web框架

游戏开发方向

库名 描述
Pygame 多媒体制作
Panda3D 3D 引擎
cocos2d 2D 引擎

其他方向

库名 描述
PIL 图像处理
SymPy 数学计算
NLTK 自然语言处理
WeRoBot 微信机器人框架
MyQR 二维码

Tips

image-20240831151947965

image-20240831152015762

结束

本文作者:Iota @ Iotaの小屋

本文发布时间:2023-03-15 11:00:00

本文版权:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

留言