Python学习之旅

66 阅读12分钟

面向过程 vs 面向对象

面向过程

面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。

image.png

举个例子,下五子棋,面向过程的设计思路是首先分析解决这个问题的步骤:

(1)开始游戏(2)黑子先走(3)绘制画面(4)判断输赢(5)轮到白子(6)绘制画面(7)判断输赢(8)返回步骤(2) (9)输出最后结果。

用函数实现上面一个一个的步骤,然后在下五子棋的主函数里依次调用上面的函数(不同的编程语言有不同的调用方法,我这里写的是直接调用):

下五子棋{

开始游戏();

黑子先走();

绘制画面();

判断输赢();

轮到白子();

绘制画面();

判断输赢();

返回到 黑子先走();

输出最后结果;

}

面向对象

在日常生活或编程中,简单的问题可以用面向过程的思路来解决,直接有效,但是当问题的规模变得更大时,用面向过程的思想是远远不够的。所以慢慢就出现了面向对象的编程思想。世界上有很多人和事物,每一个都可以看做一个对象,而每个对象都有自己的属性和行为,对象与对象之间通过方法来交互。面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为。

image.png

在下五子棋的例子中,用面向对象的方法来解决的话,首先将整个五子棋游戏分为三个对象:

(1)黑白双方,这两方的行为是一样的。

(2)棋盘系统,负责绘制画面

(3)规则系统,负责判定犯规、输赢等。

然后赋予每个对象一些属性和行为:

(4)第一类对象(黑白双方)负责接受用户输入,并告知第二类对象(棋盘系统)棋子布局的变化,棋盘系统接收到了棋子的变化,并负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以看出,面向对象是以功能来划分问题,而不是以步骤解决。比如绘制画面这个行为,在面向过程中是分散在了多个步骤中的,可能会出现不同的绘制版本,所以要考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘系统这个对象中出现,从而保证了绘图的统一。


IPO程序编写方法

IPO程序编写方法是一种通用的程序设计方法,它可以应用于任何编程语言,包括Python。IPO是Input(输入)、Process(处理)和Output(输出)三个单词的缩写,它代表了程序的基本结构。

1. 输入

输入是指程序从外部获取的数据。数据可以来自文件、键盘、网络等。在Python中,可以使用以下方法来获取输入:

  • 使用input()函数从键盘获取输入
  • 使用open()函数打开文件并读取数据
  • 使用urllib.request.urlopen()函数从网络获取数据

2. 处理

处理是指程序对输入数据进行计算或操作。在Python中,可以使用各种内置函数和模块来进行处理,例如:

  • 使用数学运算符进行数学运算
  • 使用字符串函数进行字符串操作
  • 使用列表函数进行列表操作

3. 输出

输出是指程序将结果显示给用户或存储到文件。在Python中,可以使用以下方法来进行输出:

  • 使用print()函数将结果输出到控制台
  • 使用open()函数将结果写入文件

image.png

# 输入
a = int(input("请输入第一个数字:"))
b = int(input("请输入第二个数字:"))

# 处理
c = a + b

# 输出
print("两个数的和是:", c)


print函数的使用

1、解释说明

print()函数是Python中用于输出信息到控制台的内置函数。它可以接收多个参数,并将这些参数转换为字符串,然后将它们按顺序连接起来,最后输出到控制台。默认情况下,参数之间用空格分隔,输出结束后会自动换行。

2、使用示例

以下是一些使用print()函数的示例:

# 输出一个字符串
print("Hello, World!")

# 输出多个参数,用逗号分隔
print("Hello", "World!")

# 输出变量的值
name = "Tom"
age = 18
print("My name is", name, "and I am", age, "years old.")

# 输出表达式的结果
print(3 + 4)

# 输出格式化字符串
print("The sum of 3 and 4 is: %d" % (3 + 4))

3、注意事项

  • print()函数可以接受不同类型的参数,如字符串、数字、列表、元组等。但是,如果需要输出其他类型的数据,可能需要先将其转换为字符串。
  • print()函数的参数之间默认用空格分隔,可以通过设置sep参数来改变分隔符。例如:print("Hello", "World!", sep="-")将输出Hello-World!
  • print()函数默认在输出结束后自动换行,可以通过设置end参数来改变结束字符。例如:print("Hello", end="")将输出Hello并保持在同一行。

input函数的使用

1、解释说明

input()函数是Python中的内置函数,用于从用户获取输入。它会将用户输入的内容作为字符串返回。在交互式环境中,input()函数会等待用户输入,直到用户按下回车键。在脚本中运行时,程序会暂停执行,等待用户输入。

2、使用示例

# 获取用户输入的姓名
name = input("请输入您的姓名:")
print("您的姓名是:", name)

# 获取用户输入的数字
age = input("请输入您的年龄:")
print("您的年龄是:", age)

3、注意事项

  • input()函数返回的是字符串类型,如果需要其他类型的数据(如整数、浮点数等),需要进行类型转换。
age = int(input("请输入您的年龄:"))
  • 在使用input()函数时,可以给函数传递一个可选的字符串参数,这个参数会作为提示信息显示给用户。
age = int(input("请输入您的年龄(整数):"))
  • 如果用户输入的内容无法转换为指定的类型,会引发ValueError异常。因此,在使用input()函数时,需要注意处理异常。
try:
    age = int(input("请输入您的年龄(整数):"))
except ValueError:
    print("输入错误,请输入整数!")

注释

1、解释说明

Python中的注释是用来解释代码、提供额外信息或者暂时禁用某段代码的一种方式。注释不会被计算机执行,主要用于提高代码的可读性和可维护性。在Python中,有两种类型的注释:单行注释和多行注释。

2、使用示例

  • 单行注释:使用井号(#)开头,注释内容在同一行内。
# 这是一个单行注释
print("Hello, World!")  # 这也是一个单行注释
  • 多行注释:使用三个连续的单引号(''')或双引号(""")包围注释内容。
'''
这是一个多行注释
可以跨越多行
'''
print("Hello, World!")

3、注意事项

  • 注释应当简洁明了,避免过长的注释。
  • 注释应当与代码块对齐,以便于阅读。
  • 注释不应当包含敏感信息,如密码、密钥等。
  • 在编写复杂的算法或者函数时,应当在注释中说明函数的功能、参数、返回值等信息。

代码的缩进

1、解释说明

Python中的缩进是指代码块的层次结构,通过空格或制表符(Tab)来实现。在Python中,缩进是用来表示代码块的开始和结束,而不是像其他编程语言那样使用大括号({})。Python强制要求代码块的缩进量相同,否则会导致语法错误。通常情况下,我们使用4个空格作为缩进的基本单位。

2、使用示例

# 正确的例子
def func():
    if condition:
        print("True")
    else:
        print("False")

# 错误的例子(缩进不一致)
def func():
  if condition:
      print("True")
  else:
    print("False")

3、注意事项

  • 缩进量必须相同,不能混合使用空格和制表符(Tab)。
  • 缩进量通常为4个空格,但可以根据个人喜好和团队规范进行调整。
  • 不要在行尾添加额外的空格或制表符。
  • 避免使用制表符(Tab),因为不同的编辑器可能会以不同的方式显示制表符,导致代码格式混乱。建议统一使用空格进行缩进。

保留字与标识符

image.png

解释说明: 保留字是Python语言中具有特殊含义的单词,不能用作变量名、函数名等标识符。标识符是用于给变量、函数、类等命名的名称。

使用示例:

  1. 保留字示例:

    • if: 用于条件判断
    • for: 用于循环遍历
    • def: 用于定义函数
    • class: 用于定义类
  2. 标识符示例:

    • 变量名:my_var
    • 函数名:my_function
    • 类名:MyClass

注意事项:

  1. 保留字不能作为标识符使用,否则会导致语法错误。

  2. 标识符的命名应遵循一定的规则,如:只能包含字母、数字和下划线,不能以数字开头,不能使用保留字等。

  3. 为了提高代码的可读性,建议使用有意义的标识符名称。

image.png

image.png

image.png


变量与常量

image.png

1、解释说明

变量和常量是Python编程中的两个基本概念。

变量:变量是用来存储数据的容器,它可以在程序运行过程中改变其值。在Python中,变量不需要声明,直接为其赋值即可。

常量:常量是在程序运行过程中其值不会改变的量。在Python中,常量通常用全大写字母表示,以遵循PEP 8编码规范。但实际上,Python并没有真正意义上的常量,所谓的常量只是约定俗成的一种命名规范。

2、使用示例

变量示例:

x = 10
y = 20
x = y
print(x)  # 输出:20

常量示例(实际上并不会限制其值的改变):

PI = 3.1415926
GRAVITY = 9.8

3、注意事项

  • 变量名不能以数字开头,不能包含空格或特殊字符,只能包含字母、数字和下划线。
  • 避免使用Python内置函数和关键字作为变量名。
  • 变量名应尽量简洁且具有描述性,以便于理解其用途。
  • 对于常量,虽然Python没有强制限制其值的改变,但为了遵循编码规范和提高代码可读性,应尽量避免修改常量的值。

数值类型

在Python中,数值类型用于表示各种数学上的数值。具体来说,Python的数值类型主要包括以下几种:

  1. 整数(int):用于表示整数,可以是正数、负数或零。整数有四种进制表示形式:二进制、八进制、十进制和十六进制。例如,0b10100o12100xa 都表示同一个整数。
  2. 浮点数(float):用于表示实数,即带有小数点的数值。浮点数由整数部分和小数部分组成。例如,3.14 是一个浮点数。
  3. 复数(complex):用于表示复数,由实部和虚部组成。复数的表示形式为 a + bj,其中 a 是实部,b 是虚部。例如,4 + 5j 表示一个复数。
  4. 布尔值(bool):虽然布尔值通常不被视为数值类型,但在Python中,它们确实可以被当作数值来处理,其中 True 等价于 1False 等价于 0

使用示例:

  • 整数:a = 6
  • 浮点数:b = 8.8
  • 复数:c = 6j
  • 布尔值:is_true = Trueis_false = False

注意事项:

  • 在进行数学运算时,Python会根据需要自动转换数值类型。例如,整数除法会返回浮点数,而浮点数和整数的混合运算也会返回浮点数。
  • 对于非常大的整数,Python会自动使用长整型(long)来存储,以便保持精度。
  • 在使用复数进行计算时,需要注意复数的运算规则与实数不同,例如不能直接比较大小。
  • 布尔值虽然可以像整数一样使用,但在逻辑判断中更为常见。

image.png

image.png


字符串类型

image.png

image.png

image.png

1、解释说明

字符串类型(str)在Python中是一种基本的数据类型,用于表示文本信息。字符串是由字符组成的序列,可以包含字母、数字、符号等。在Python中,字符串是不可变的,即创建后不能修改。

2、使用示例 创建字符串:

s1 = "Hello, World!"
s2 = 'Python编程达人'

字符串拼接:

s3 = s1 + " " + s2
print(s3)  # 输出:Hello, World! Python编程达人

访问字符串中的字符:

print(s1[0])  # 输出:H

切片操作:

print(s1[7:12])  # 输出:World

字符串方法:

s4 = s1.upper()  # 转换为大写
print(s4)  # 输出:HELLO, WORLD!

3、注意事项

  1. 字符串的索引从0开始,且不能为负数。
  2. 字符串是不可变的,所以不能直接修改其中的某个字符。如果需要修改,可以通过切片和拼接的方式实现。
  3. 在处理大量字符串时,要注意内存的使用,避免创建过多的临时字符串。