Python知识汇总(持续更新)

内容纲要

0.常用快捷键

快捷键 作用
批量注释 Alt+3
批量解注释 Alt+4
批量向左缩进 Shift+Tab
批量向右缩进 Tab
复制 Ctrl+C
粘贴 Ctrl+V
撤销操作 Ctrl+Z
反撤销操作 Ctrl+Y

1.Python安装

  1. 勾选Add Python to Path,然后点击自定义安装

  1. 选择安装路径,然后点击Install

1.1 验证Python安装是否成功

  1. 去电脑中找到IDLE软件并打开

  1. 点击File-New File,创建一个文件

image-20221112102017580

  1. 保存快捷键 Ctrl+S

  2. F5运行代码

1.2 IDLE的代码调试功能

  1. 在代码中设置断点(Set Breakpoint)

image-20221112103854224

  1. 在交互式命令行中点击Debug-Debugger

  1. 点击Over逐步执行程序

2. Python基本常识

2.1 Python的注释

# 单行注释
'''
多行注释
这是多行注释的第二行
这是多行注释的第三行
# 批量注释 Alt+3
# 批量解注释 Alt + 4
'''

2.2 Python的输入输出

  1. 输入input()
  2. 输出print()
a = input("请输入一个数字:") # 输入函数
print(a) # 输出函数

2.3 变量

计算机的最核心功能就是“计算”, 计算需要数据源,数据源要存在内存里。
计算机的内存可以看成是一块一块的小空间,而变量就是这些小空间的名字,在程序的运算中,只要“呼叫”数据的名字(变量),就能够访问到数据本身。

2.3.1 如何使用变量

变量名=变量值
例如:a=3 ,表示将3这个数字放到内存中名字叫做a的小空间中。
在编程语言中,=的意思是将=右边的值赋值给右边的变量,而不是相等的意思。

在a=3,这步运算中,cpu会分这样几个步骤:

  1. 在内存中开辟一块小空间

  2. 将新开辟的这块小空间命名为a

  3. 将3这个数据放到名字为a的小空间中

2.4 标识符

2.4.1 认识标识符

上一章我们学习了如何使用变量,其实变量的名字是我们可以自定义的,在Python中,所有可以让我们自定义名字的东西,都叫做标识符。变量名是标识符的一种,函数名、类名等都属于标识符的范畴。那我们如何来给标识符来起名字呢?

标识符命名规则:

  1. 标识符只能由字母、数字和下划线组成,但是数字不能开头。

  2. Python保留字不能作为标识符使用。

  3. 命名时要见名知意,比如表示学生姓名,可以用student,虽然a也可以命名,但是明显看到student就能知道这个变量作用,所以student比a好。

  4. 如果需要两个或以上单词组合作为标识符,多个单词之间可以用下划线相连。

2.4.2 Python中的保留字

我们对这些保留字眼熟即可,后面我们的课程会对一些保留字进行讲解。

3.小练习

运用我们前面的知识,解决计算梯形面积的问题。

已知梯形的面积公式是:面积=(上底+下底)*高/2,

现请你使用input()函数输入相关的数据,然后使用print()函数输出梯形的面积。

提示:上底:top 下底:bottom 高:height

加:+ 减:- 乘:* 除:/

4. python运算符

4.1 算术运算符

  1. +
  2. -
  3. *
  4. /
  5. % 取余运算(模运算) 求两个数相除的余数 例如:10%3 结果 1
  6. * 幂运算 例如:3**4 = 3*3*3\3
  7. // 地板除 求两个数相除的整数部分 10//3 = 3

例子:五舍六入

# 实现5舍6入
s = input("请输入一个数:")
s = float(s)
# 0.25698
n1 = s*1000 # 256.98
n2 = n1//1 # 256
n3 = n2%10 # 6
result = 0
if n3>=6:
    result = s+0.01 # 进位
    result = result*100//1/100  # 0.26  舍掉多余的小数位
else:
    result = s*100//1/100
print(result)

4.2 关系运算符(比较运算符)

  1. <
  2. >
  3. == 是否相等
  4. >=
  5. <=
  6. != 不等于

使用细节

  1. 像组合符号(>= 、<=),中间不能有空格
  2. 使用关系运算符时,计算的结果只有两种:True(真) 或 False(假)
a = 10
b = 5
c = 15
d = 5
print(a<=b) # False
print(a>=c) # False
print(b != d) # False
print(c>=d) # True
print(b == d) # True
print(b=d) #  报错
print(a<=b)

4.3 赋值运算符

赋值:将什么东西给什么东西

  1. = 是最简单的赋值运算符

    a = 10 将10这个值赋予a这个变量

  2. +=

    a = 10
    a += 2  # 等价于 a = a + 2
    priint(a) # a=12
  3. -=

  4. *=

  5. /=

  6. %=

  7. //=

  8. **=

    a = 3
    a**=4 # 等价于 a = a ** 4
    print(a) # 81

4.4 逻辑运算符

  1. and (逻辑与)

    a = 10
    b = 5
    c = 8
    print(a<=10 and c>b) # True
    print(a<=10 and c=100 and c

    规律:两边的表达式只要有一个为False,那么整个结果就是False。必须两边都是True,结果才为True。

  2. or (逻辑或)

    a = 10
    b = 5
    c = 8
    print(a<=100 or c>30) # True
    print(a>30 or b<2) # False
    print(a<=50 or b>0) # True

    规律:两边的表达式,至少有一个是True,那么整个结果就是True

  3. not (逻辑非) 单运算符

    a = 10
    b = 5
    c = 8
    print(not a>100) # True
    print(not c>b) # False

    规律:将not后面的表达式的结果取反。

4.5 身份运算符

用来判断两个变量是否是同一个对象。

  1. is
  2. is not

4.6 成员运算符

判断一个对象是不是另一个对象的成员

  1. in
  2. not in
a = "魏来编程科技推广中心"
b = "编广"
c = "编程"
print(b in a) # False
print(c in a) # True

4.7位运算符

  1. & 按位与

  2. | 按位或

  3. ^ 按位异或

  4. << 按位左移

  5. >> 按位右移

a = 3
b = 5
print(a&b) # 1
print(a|b) # 7
print(a^b) # 6

print(b<<2) # 20
print(b>>2) # 1

4.8 小练习

  1. 将笔记中的代码自己全部敲一下
  2. 将笔记中的内容(除了代码)要能够背下来

5. 基本数据类型

5.1 数字类型

数字类型就是一系列代表数值的数据。

5.1.1 整数类型 (int)

  1. 十进制表示形式 5 108 46
  2. 八进制表示形式 0o46
  3. 二进制表示形式 0b101101 0b101
  4. 十六进制表示形式 0x45A 0x78FA4

注意点:不同进制之间可以直接进行运算,运算结果都是10进制

数据类型强制转换:

##result = int(input("请输入一个数:"))
result = input("请输入一个数:")
# 将字符串类型的result转换成整数类型
result = int(result)
print(result*2)

5.1.2 浮点数类型(float)

  1. 一般表示形式: 3.14 5.789
  2. 科学计数法表示: 0.000000000000321 3.21E-13
a = 1.234
b = 3.21E-13
print(a)
print(b)
print(type(a)) # <class 'float'>
print(type(b)) # <class 'float'>

整数类型和浮点数类型计算的问题:

  1. 浮点数和整数类型做计算,结果一定是浮点数
  2. 整数和整数进行计算,结果有可能是浮点数,只要计算结果有产生小数的可能,那么结果一定是浮点数。

5.1.3 复数类型()

4+3j

j 代表根号下-1

符号前面的数字是实部,符号后面的数字叫虚部。

假设a是一个复数,那么,使用:

a.real 来获取它的实部

a.imag来获取它的虚部

注意:实部和虚部都是浮点数

a = 5-4j
print(a)
print(a.real) # 5.0
print(a.imag) # -4.0

5.1.4 数字类型总结

image-20220728184217824

知识点总结:

  1. 各个进制数的特点
  2. 掌握如何将其他数据类型转换成整数类型
  3. 整数类型和浮点数类型计算的问题
  4. 求复数的实部和虚部

5.2 字符串类型 (str)

5.2.1 字符串的种类和表现形式

  1. 单行字符串

    a = '我是一个单行字符串'
    b = "我还是一个单行字符串"
    print(a)
    print(b)
  2. 多行字符串

a = '''我是一个多行字符串
我还可以换行
我还能换好多行
'''
b = """我是使用双引号来表示的多行字符串
我还可以换行
我还能换好多行
"""
print(a)
print(b)
a = 45 # int
b = '45' # 字符串
print(a)
print(b)
print(type(a)) # int
print(type(b)) # str

5.2.2 \的作用

  1. 转义字符

    a = '我是一个\n单行字符串'
    b = "我还是一个\"单行\"字符串"
    # \是转义字符  转义字符可以将普通字符转换成特殊字符,也可以将特殊字符转换成普通字符
    print(a)
    print(b)
    • \t 制表符
  • \n 换行符

  • \0 空字符

    1. 续行符

    太长的代码中可以使用\作为续航符,虽然写在不同行,但是逻辑上是在一行的

    a = "我是一个单行字符串我是一个\
    单行字符串我是一个单行字符串我是\
    一个单行字符串我是一个单行字符串我\
    是一个单行字符串我是一个单行字符串我是\
    一个单行字符串我是一个单行字符串我是一\
    个单行字符串我是一个单行字符串我\
    是一个单行字符串"

5.2.3 字符串的索引

索引就是字符所在字符串的编号。

从左向右,从0开始,依次计算

从右往左,从-1开始,依次计算

image-20220728184258079

a = "我是单行字符串"
print(a[3])

5.2.4 区间的概念

  1. [ ]:代表闭区间
  2. ( ):开区间
  3. [ ):闭开区间
  4. (]:开闭区间

5.2.5 字符串的切片

语法:字符串变量 [ 开始的索引 : 结束的索引 : 步长]

a = "我是单行字符串"
print(a[2:4]) 
# ‘单行’
# 这种写法是错误的
a = "我是单行字符串"
print(a[-3:2])
# 下面是正确的写法
print(a[2:-3])

字符串的切片中,在逻辑上左边的字符索引要先写,逻辑上在右边的字符索引后写

步长:每几个字取一个字符,例如:

a = "我是单行字符串"
print(a[0:5:3])# 我行

5.2.6 切片的隐藏用法

  1. 如果从字符串的开始(0的位置)切,那么0可以省略。
  2. 如果切到字符串的末尾,则末尾的数字可以省略。

5.2.7 小练习

# 小练习:a = '西游记红楼梦水浒传三国演义'
# 1.西游记
# 2.红楼梦
# 3.水浒传
# 4.三国演义
# 5.西红水三
# 6.西游记红楼梦水浒传三国演义

答案:

a = '西游记红楼梦水浒传三国演义'
print(a[0:3])
print(a[3:6])
print(a[6:9])
print(a[9:13])
print(a[0:11:3])
print(a[0:13])
a = '西游记红楼梦水浒传三国演义'
print(a[:3])
print(a[3:6])
print(a[6:9])
print(a[9:])
print(a[:11:3])
print(a[:])

5.2.8 字符串的格式化

5.2.8.1 %形式格式化

需求:打印:小明今年的年龄是多少岁。其中年龄是一个变量。

age = int(input("年龄:"))
print("小明今年的年龄是%d岁" % age)

”%[位置][宽度][.精度]占位符种类“ % 占位数据

pi = 3.1415926
print("圆周率的值是:%-10.2f"%pi) # %-10.2f 代表按10位宽度输出,数字居左,并且保留2位小数
占位符 占位符说明
%d 占位整数
%f 占位浮点数
%s 占位字符串
5.2.8.2 format形式格式化

需求:打印:小明今年的年龄是多少岁。其中年龄是一个变量。

age = 18
print("小明今年的年龄是{}岁".format(age))
  1. {} 叫做槽,是用于占位数据的

  2. 槽中还可以有序号,序号要从0开始,填充数据时按照序号的顺序来填

    age = 18
    name = '小王'
    print("{1}今年的年龄是{0}岁".format(age,name))
  3. 槽中可以填写字符串格式化控制符,用来指定格式,让填充的数据以指定的格式来输出

    image-20220728184334773

s = '魏来编程'
print("{:#^30}".format(s)) 
# #############魏来编程#############
print("{:,}".format(18000000000000000000000000000000))

# 有效数字:
print("{:.4}".format(3.141592653))

5.2.9 字符串常用的处理函数和方法

image-20220728184410086

s = "数学成绩是100分"
# 求字符串的长度
print(len(s))
# 将任意类型转换成字符串类型
a = 2.14
print(str(a))
# 求64所对应的UTF-8码表当中的字符
print(chr(65))
# 求字符所对应的编码
print(ord('A'))# 65
# 整数转16进制的字符串
a = 56
print(hex(a))
# 整数转8进制的字符串
print(oct(a))

需要记忆的字符编码:

  1. A 65
  2. a 97
  3. \0 1

image-20220728184659054

s = "abcdefgcHIjkLMcNOpq"
print(s.lower())
print(s.upper())

s2 = "文明,公正,民主,富强"
ls = s2.split(",")
print(ls)
print(ls[0])
print(ls[1])
print(ls[2])
print(ls[3])

r = s.count('c')
print(r)

s3 = s2.replace("公正","和谐")
print(s3)

s4 = s2.replace(",","|")
print(s4)

s5 = " dgsdf sdf dasfg    "
s6 = s5.strip(' ')
print(s6)

s7 = "文明和谐民主富强"
s8 = ",".join(s7)
print(s8)

5.2.10 小练习

  1. 打印自己的名字,要求30位宽度输出,数据居右显示,空白的地方填充*号

  2. 定义一个浮点数类型的数据,按50位宽度输出,保留4位小数

  3. 定义3个整数型变量,分别代表学生的数学、语文、英语,三科的成绩,定义一个字符串变量,代表人名,要求输出这样的一句话:

    谁的数学成绩是多少分,语文成绩是多少分,英语成绩是多少分,总分是多少分,平均分是多少分

  4. 求第三题中输出的字符串的长度是多少?

  5. 密码加密

    将一个字符串中的各个字符先转换成字符编码,然后将编码乘3再加1,之后再转换回字符串。

    ①将 “有内鬼,停止交易” 转换成密文。

    ②再将密文按照上面规则解密成明文

  6. ①将 “文明,公正,民主,富强” 中的逗号替换成*号

    ②将上一步得到的字符串中的 民主 替换成 更高更快更强

    ③将上一步的到的字符串,每两个字符之间添加一个#号

    ④将上一步的到的字符串,按照#分割,并打印分割之后的内容

6.流程控制

6.1 流程控制概述

流程控制就是使用一一些特定的语法,来改变程序的执行流程,比如,要对一种情况进行判断,如果条件成立则执行一种操作,如果不成立则执行另一种操作,这种结构叫做分支及结构。分支结构中的语句并不是从上到下依次执行的,而是有条件的执行。再比如,我们要重复执行一段任务,这就需要使用到循环结构,循环结构也不是从上到下依次执行的。使用分支结构和循环结构对程序执行流程进行控制,就叫做流程控制。

程序的三大结构

  1. 顺序结构
  2. 分支结构
  3. 循环结构

6.2 分支结构

6.2.1 单分支结构

if 条件表达式:

<缩进>分支语句

# 如果明天天气好,我就去打篮球
b = False6
if b:
    print("打篮球")

6.2.2 二分支

单分支结构,他只关注了条件成立的情况,如果条件不成立,那么终端则没有任何输出,这对用户是非常不友好的,最好也要给出不成立的情况下的做法。

if 条件表达式:

<缩进>分支语句1

else:

<缩进>分支语句2

# 如果明天天气好,我就去打篮球
b = False
if b:
    print("打篮球")
else:
    print("在家看电视")

6.2.3 多分支

if 条件表达式1:

<缩进>分支语句1

elif 条件表达式2:

<缩进>分支语句2

elif 条件表达式3:

<缩进>分支语句3

...

else:

<缩进>分支语句n

score = int(input("请输入分数:"))
if score>=90 and score<=100 :
    print("A")
elif score>=80 and score<90:
    print("B")
elif score>=70 and score<80:
    print("C")
elif score>=60 and score<70:
    print("D")
##elif score<60:
##    print("E")
else:
    print("E")

6.2.5 总结

  1. 单分支语句只关注条件成立的情况下。
  2. 二分支用于判断一个条件的两种情况(成立或者不成立),二分支语句必然执行其中一条分支语句。
  3. 多分支语句用于多个条件的判断,至多执行一条分支语句。

6.2.6 分支小练习

  1. 输入一个数,如果是偶数,则输出0,是奇数则输出1
  2. 读入一个整数,若这个数大于1并且小于100,则输出yes
  3. 输入三个整数,按从大到小的顺序输出。
  4. 输入温度t的值,判断是否适合晨练。(25≤t≤30,则适合晨练ok!,否则不适合no!)
  5. 任意输入一个字符,判断其Unicode码是否是奇数,若是,输出YES,否则,输出NO。例如,字符A的Unicode值是65,则输出YES,若输入字符B(Unicode值是66),则输出NO。
  6. 判断一个正整数是否是两位数(即大于等于10且小于等于99)。若该正整数是两位数,输出1,否则输出0。

6.3 循环结构

6.3.1 for循环

  1. 基本结构

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

    缩进 循环体

    for i in range(100):
       print(i)

    例子:计算1-100的和

    s = 0
    for i in range(1,101):
       s+=i
    print(s)
  2. range()函数的用法

    range()函数返回的是一个类列表的类型,例如range(100),生成的是0-99的类列表,range(1,101)生成的是1-100的类了列表

  3. for循环的执行流程

例题:

# 求1-1000之内的所有偶数的和
s = 0
for i in range(1,1001):
    if i%2==0:
        s+=i
print(s)

# 练习:求1-1000之内,3的倍数,5的倍数,7的倍数的和。
s = 0
for i in range(1,1001):
    if i%3==0 or i%5==0 or i%7==0:
        s+=i
print(s)

# 求所有的水仙花数。一个三位数各个位上的数字的立方之和等于这个数本身,那么这个数
#   就是水仙花数,例如:153 = 1*1*1+5*5*5+3*3*3
for i in range(100,1000):
    i = str(i)
    bai = int(i[0])
    shi = int(i[1])
    ge = int(i[2])
    if bai*bai*bai+shi*shi*shi+ge*ge*ge == int(i):
        print(i)

6.3.2 while循环

  1. 基本结构

    while(条件表达式):

    ​ 循环体

  2. 执行流程

    1. 例题:

      # 对于正整数n,求s=1+2+3……+n,当加到第几项时,s的值会超过1080?
      # while 循环
      # 基本结构:
      #     while(条件表达式):
      #         循环体
      s = 0
      i = 1
      while(s<=1080):
        s+=i
        i+=1
      print(i)
      
      # 找出所有与7有关的4位数。(是7的倍数,或者某一位上有7)
      i = 1000
      while(i<=9999):
        s = str(i) 
        if (i%7==0) or ('7' in s):
            print(i)
        i+=1

6.3.3 循环控制符

  1. break

    # 通过循环来统计字符串中前多少个字符相同
    '''
    break  退出,跳出
    可以结束当前所在的循环,跳向当前所在循环后面的语句
    '''
    s1 = input("第一个字符串:")
    s2 = input("第二个字符串:")
    n = 0
    for i in range(0,len(s1)):
       if s1[i] != s2[i]:
           break
       n+=1
    print(n)

    例题:

    # 已知三个正整数a,b,c。现有一个大于1的整数x,将其作为除数分别除a,b,c,得到的余数相同。
    # 请问满足上述条件的x的最小值是多少?
    a = int(input("a:"))
    b = int(input("b:"))
    c = int(input("c:"))
    x = 2
    # while(not(a%x == b%x and b%x==c%x)):
    #     x+=1
    # print(x)
    while(True):
       if a%x == b%x and b%x==c%x:
           print(x)
           break
       x+=1
  2. continue

    '''
    continue 继续
    退出本次循环,继续进行下一次循环
    '''
    # 打印100以内的奇数
    for i in range(101):
       if i%2 ==0:
           continue
       print(i)

    例题:

    # 找出字符串a中和字符串b中不相同的部分。
    a = input("a:")
    b = input("b:")
    for i in range(0,len(a)):
       if a[i] == b[i]:
           continue
       print(a[i])

6.3.4 循环嵌套

循环是可以嵌套使用的,里面的小循环执行完一轮,外面大循环才会迭代一次

# 打印5x5空心正方形
for i in range(5):
    for j in range(5):
        if i==0 or i==4:
            print("*",end=" ")
        else:
            if j==0 or j==4:
                print("*",end=" ")
            else:
                print(" ",end=" ")
    print()
# 打印5x5实心正方形
for i in range(5):
    for j in range(5):
        print("*",end="")
    print()

# 打印nxn的空心三角形
n = int(input("请输入数字:"))
for i in range(1,n+1):
    for j in range(i):
        # print("*",end="")
        if i==1 or i==n or j==0 or j==i-1:
            print("*",end="")
        else:
            print(" ",end="")
    print()

例题:

# 百钱买百鸡问题。鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
for x in range(20):
    for y in range(33):
        if (100-x-y)%3 !=0:
            continue
        if x*5+y*3+(100-x-y)/3 == 100:
            print("鸡翁:%d,鸡母:%d,鸡雏:%d"%(x,y,100-x-y))

6.3.5 练习

  1. 找出所有与7有关的4位数。(是7的倍数,或者某一位上有7)
  2. 谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。程序要求输入一个整数,将经过处理得到1的过程输出来。
阅读剩余
THE END