一、引言
在 2024 年,Python 依然是编程领域的闪耀之星。无论是数据分析、人工智能、Web 开发还是自动化任务,Python 都以其简洁高效的语法和强大的功能发挥着重要作用。本文将为你呈现超级完整的 Python 基础语法和知识点总结,助你轻松掌握这门热门语言。
本篇文章篇幅较长,希望能慢慢看完,文中提到的《Python语法及练习题》相关知识点,小尤已经整理成PDF,**需要的可以文末自取!
或者扫描下方二维码获取
Python 语言特点:
-
易于学习和阅读:Python 的设计哲学强调代码的可读性和简洁的语法(比如使用缩进来定义代码块,而不是大括号或关键字)。这使得 Python 成为初学者的理想选择,同时也便于经验丰富的开发者编写和维护代码。
-
解释型语言:Python 是解释型语言,这意味着你可以直接在 Python 解释器中运行代码,而无需事先编译成机器码。这种特性使得 Python 代码的开发和调试过程更加快速和灵活。
-
面向对象:Python 支持面向对象的编程范式,这意呀着你可以定义和使用类(class)和对象(object),以及它们的属性和方法。面向对象编程(OOP)有助于编写模块化、可重用的代码。
-
丰富的标准库和第三方库:Python 拥有庞大的标准库,提供了大量的模块和函数来支持各种任务,如文件操作、网络编程、文本处理、数据库交互等。此外,还有大量的第三方库和框架,如 NumPy、Pandas(用于数据处理和分析)、Django(Web 开发框架)、TensorFlow/PyTorch(机器学习库)等,极大地扩展了 Python 的应用领域。
-
跨平台:Python 代码可以在多种平台上运行,包括 Windows、macOS、Linux/Unix 等。这种跨平台性使得 Python 成为开发跨平台应用程序的理想选择。
-
可扩展性:Python 是一种可扩展的语言,这意味着你可以使用 C 或 C++(或其他语言)来编写 Python 模块的扩展,从而实现对性能的优化或访问低级系统接口。
-
动态类型系统:Python 使用动态类型系统,即变量的类型是在运行时确定的,而不是在编译时。这增加了 Python 的灵活性,但也需要注意类型错误的可能性。
-
强大的社区支持:Python 拥有庞大的社区和丰富的资源,包括官方文档、教程、书籍、博客、论坛和问答网站(如 Stack Overflow)。这些资源为 Python 开发者提供了广泛的支持和帮助。
-
免费和开源:Python 是一种自由软件,其源代码是开放的,并且由 Python 软件基金会(PSF)管理。任何人都可以自由地使用、复制、修改和分发 Python。
-
广泛的应用领域:由于 Python 的易用性和强大的库支持,它已经被广泛应用于 Web 开发、数据分析、人工智能、机器学习、自动化脚本、科学计算、网络爬虫、游戏开发等多个领域。
一、基础语法练习题
1. 编写一个程序,计算并打印出 1 到 100 之间所有能被 3 和 5 同时整除的数的和。答案解析:
sum_num = 0
for i in range(1, 101):
if i % 3 == 0 and i % 5 == 0:
sum_num += i
print(sum_num)
2. 给定一个字符串,将其中的元音字母(a, e, i, o, u)全部替换为大写的“V”。答案解析:
vowels = 'aeiou'
s = "This is a string."
new_s = ""
for char in s:
if char.lower() in vowels:
new_s += 'V'
else:
new_s += char
print(new_s)
3. 实现一个函数,接收一个整数参数 n,返回 n 的阶乘。答案解析:
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
二、变量与数据类型
1. 变量:
用于存储数据的标识符,可随时修改值。遵循一定命名规则,如由字母、数字和下划线组成,不能以数字开头,区分大小写。
2. 数据类型:
- 数字类型:
-
整数(int):可表示正整数、负整数和零。
-
浮点数(float):带有小数部分的数字。
-
复数(complex):由实部和虚部组成。
-
-
字符串(str):用单引号、双引号或三引号括起来的字符序列,可进行拼接、切片等操作。
-
列表(list):可变的有序序列,可存储不同类型的数据,通过索引访问元素。
-
元组(tuple):不可变的有序序列,一旦创建不能修改。
-
集合(set):无序的不重复元素集合,支持集合运算。
-
字典(dict):键值对的无序集合,通过键来访问值。
3.列表和字典练习题
1. 有一个列表 `[2, 5, 3, 8, 4, 6]`,请使用列表推导式生成一个新的列表,其中每个元素是原列表对应元素的平方减 1。答案解析:
original_list = [2, 5, 3, 8, 4, 6]
new_list = [i**2 - 1 for i in original_list]
print(new_list)
2. 给定一个字典,其中包含学生的姓名和他们的成绩。请找出成绩最低的学生的姓名。答案解析:
students = {'Alice': 85, 'Bob': 78, 'Charlie': 90, 'David': 72}
min_score = min(students.values())
for name, score in students.items():
if score == min_score:
print(name)
break
3. 有两个列表,分别表示学生的姓名和他们的年龄。请创建一个字典,以学生姓名为键,年龄为值。答案解析:
names = ['Alice', 'Bob', 'Charlie']
ages = [20, 22, 19]
student_dict = {names[i]: ages[i] for i in range(len(names))}
print(student_dict)
三、运算符
1. 算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取余)、**(幂)、//(整除)。
2. 比较运算符:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
**3. 逻辑运算符:**and(与)、or(或)、not(非)。
4. 赋值运算符:=、+=、-=、*=、/= 等,用于给变量赋值并进行运算。
(1)算术运算符练习题
1. 计算表达式 `3 + 4 * 2 - 6 / 3` 的结果。
答案解析:
- 先计算乘法和除法:`4 * 2 = 8`,`6 / 3 = 2`。
- 再计算加法和减法:`3 + 8 = 11`,`11 - 2 = 9`。
2. 已知变量 `x = 5`,计算 `x**2 + 3*x - 10` 的结果。
答案解析:
- `x**2 = 5**2 = 25`。
- `3*x = 3*5 = 15`。
- 则表达式结果为 `25 + 15 - 10 = 30`。
(2)比较运算符练习
1. 判断 `5 > 3 and 4 < 6` 的结果是 True 还是 False。
答案解析:
- `5 > 3` 为 True,`4 < 6` 为 True。
- `True and True` 结果为 True。
2. 已知 `x = 10`,`y = 8`,判断 `x!= y or x > y` 的结果。
答案解析:
- `x!= y` 为 True,`x > y` 为 True。
- `True or True` 结果为 True。
(3)逻辑运算符练习
1. 已知 `a = True`,`b = False`,计算 `not a and b` 的结果。
答案解析:
- `not a` 为 False。
- `False and False` 结果为 False。
2. 判断 `(3 > 2) and (5 < 6) or not (4 == 4)` 的结果。
答案解析:
- `3 > 2` 为 True,`5 < 6` 为 True,所以 `(3 > 2) and (5 < 6)` 为 True。
- `4 == 4` 为 True,`not (4 == 4)` 为 False。
- `True or False` 结果为 True。
(4)赋值运算符练习
1. 已知 `x = 5`,执行 `x += 3` 后,`x` 的值是多少?
答案解析:
- `x += 3` 相当于 `x = x + 3`。
- 原来 `x = 5`,则 `x = 5 + 3 = 8`。
2. 有变量 `y = 10`,执行 `y *= 2 - 1` 后,`y` 的值是多少?
答案解析:
- 先计算 `2 - 1 = 1`。 - 然后 `y *= 1`,即 `y = y * 1`。
- 原来 `y = 10`,所以结果为 `10 * 1 = 10`。
四、控制流语句
Python中的控制流语句是编程中用于控制程序执行流程的重要工具。它们允许程序根据条件、循环或其他逻辑来决定执行哪些代码块。Python中的控制流语句主要包括条件语句(if-elif-else)、循环语句(for循环和while循环)以及跳转语句(break、continue和pass)。下面将详细讲解这些控制流语句。
1. 条件语句(if-elif-else)
条件语句用于根据一个或多个条件来执行不同的代码块。Python中的条件语句以if
开头,后面可以跟一个或多个elif
(else if的缩写),以及一个可选的else
。
# 基本结构
if 条件表达式:
# 条件为真时执行的代码
elif 另一个条件表达式:
# 第一个条件为假且这个条件为真时执行的代码
else:
# 所有条件都为假时执行的代码
# 示例
x = 10
if x > 5:
print("x 大于 5")
elif x == 5:
print("x 等于 5")
else:
print("x 小于 5")
2. 循环语句
循环语句允许你重复执行一段代码直到满足某个条件。Python提供了两种基本的循环结构:for
循环和while
循环。
2.1 for循环
for
循环用于遍历任何序列(如列表、元组或字符串)或其他可迭代对象。
# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 使用range()函数
for i in range(5):
print(i)
2.2 while循环
while
循环会在给定条件为真时重复执行一段代码块。
# 示例
count = 0
while count < 5:
print(count)
count += 1
3. 跳转语句
跳转语句用于改变程序正常的执行流程。
3.1 break
break
语句用于立即退出循环,无论是for
循环还是while
循环。
for i in range(10):
if i == 5:
break
print(i)
3.2 continue
continue
语句用于跳过当前循环的剩余语句,并继续下一次循环迭代。
for i in range(10):
if i % 2 == 0:
continue
print(i)
pass
语句是一个空操作;它什么也不做,只用作语法上需要语句的地方。3.3 pass
if True:
pass # 什么都不做
总结
Python的控制流语句是编程中不可或缺的部分,它们允许你根据条件、循环或其他逻辑来控制程序的执行流程。通过熟练使用这些控制流语句,你可以编写出更加灵活和强大的Python程序。
五、函数
**1. 定义函数:**使用 def 关键字定义函数,包括函数名、参数和函数体。
2. 函数参数:
-
位置参数:按照参数位置传递值。
-
默认参数:在函数定义时指定默认值,调用时可省略。
-
可变参数:*args 接收任意数量的位置参数,**kwargs 接收任意数量的关键字参数。
**3. 返回值:**使用 return 语句返回函数的结果,可以是单个值或多个值组成的元组。
——函数练习题
1. 编写一个函数,接收一个列表和一个整数参数 n,函数返回列表中所有大于 n 的元素组成的新列表。
答案解析:
def filter_list(lst, n):
return [i for i in lst if i > n]
2. 实现一个函数,接收一个字符串参数,将其中的每个单词的长度作为新的列表元素返回。
答案解析:
def word_lengths(s):
words = s.split()
return [len(word) for word in words]
3. 写一个函数,判断一个给定的字符串是否是回文(正读和反读都一样)。
答案解析:
def is_palindrome(s):
cleaned_s = ''.join(filter(str.isalnum, s)).lower()
return cleaned_s == cleaned_s[::-1]
六、模块与包
**1. 模块:**一个包含 Python 代码的文件,可以被其他程序导入使用。
**2. 包:**一个包含多个模块的目录,用于组织和管理代码。
**3. 导入模块:**使用 import 语句导入模块或包中的特定部分,如 import module_name 或 from module_name import function_name。
(1)、模块导入练习题
1. 导入 Python 内置的`math`模块,并使用它计算半径为 5 的圆的面积。
答案解析:
import math
radius = 5
area = math.pi * radius ** 2
print(area)
2. 从`datetime`模块中导入`datetime`类,然后获取当前的日期和时间并打印出来。
答案解析:
from datetime import datetime
now = datetime.now()
print(f"当前日期和时间:{now}")
(2)、自定义模块练习
1. 创建一个名为`my_module.py`的模块,在其中定义一个函数`greet(name)`,该函数接收一个名字参数并打印出“Hello, [name]!”。然后在另一个脚本中导入这个模块并调用这个函数。
答案解析:
`my_module.py`内容:
def greet(name):
print(f"Hello, {name}!")
调用脚本内容:
import my_module
my_module.greet("John")
2. 在一个模块中定义两个函数,一个函数计算两个数的和,另一个函数计算两个数的差。在另一个脚本中导入这个模块并分别调用这两个函数。
答案解析:
`my_operations.py`内容:
def add_numbers(a, b):
return a + b
def subtract_numbers(a, b):
return a - b
调用脚本内容:
import my_operations
sum_result = my_operations.add_numbers(10, 5)
diff_result = my_operations.subtract_numbers(10, 5)
print(f"和:{sum_result},差:{diff_result}")
(3)、包的组织练习
1. 创建一个名为`my_package`的包,在其中包含两个模块`module1.py`和`module2.py`。在`module1.py`中定义一个函数打印“Module 1”,在`module2.py`中定义一个函数打印“Module 2”。然后在一个脚本中导入这两个模块并分别调用它们的函数。
答案解析:
创建包结构如下:
my_package/
__init__.py
module1.py
module2.py
`module1.py`内容:
def print_module1():
print("Module 1")
`module2.py`内容:
def print_module2():
print("Module 2")
调用脚本内容:
from my_package.module1 import print_module1
from my_package.module2 import print_module2
print_module1()
print_module2()
七、面向对象编程
**1. 类与对象:**定义类,创建对象,实现面向对象编程的封装、继承和多态特性。
**2. 方法与属性:**类中的函数称为方法,数据成员称为属性。
3. 构造函数:__init__方法,用于初始化对象的属性。
**4. 继承:**子类继承父类的属性和方法,可以扩展和重写父类的功能。
**5. 多态:**不同的对象对同一方法有不同的实现,增加代码的灵活性。
——面向对象编程练习题
1. 定义一个类表示三角形,包含三条边的长度属性,以及计算面积的方法。
答案解析:
import math
class Triangle:
def __init__(self, side1, side2, side3):
self.side1 = side1
self.side2 = side2
self.side3 = side3
def area(self):
s = (self.side1 + self.side2 + self.side3) / 2
return math.sqrt(s * (s - self.side1) * (s - self.side2) * (s - self.side3))
2. 创建一个类表示汽车,有品牌、颜色和速度属性,以及加速和减速的方法。
答案解析:
class Car:
def __init__(self, brand, color, speed=0):
self.brand = brand
self.color = color
self.speed = speed
def accelerate(self, increment):
self.speed += increment
def decelerate(self, decrement):
self.speed = max(0, self.speed - decrement)
3. 设计一个类表示动物,有名字和年龄属性,以及一个发出声音的方法。然后创建子类表示猫和狗,分别实现它们特定的声音。
答案解析:
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
def make_sound(self):
pass
class Cat(Animal):
def make_sound(self):
return "Meow"
class Dog(Animal):
def make_sound(self):
return "Woof"
八、异常处理
**1. 异常类型:**常见的异常类型如 ValueError、TypeError、IndexError 等。
**2. try-except 语句:**捕获和处理异常,保证程序的稳定性。
**3. finally 语句:**无论是否发生异常,都会执行的代码块。
(1)、基本异常处理练习
1. 编写一个程序,尝试将一个字符串转换为整数,如果字符串不能转换为整数则捕获异常并输出错误信息。
答案解析:
try:
s = "abc"
num = int(s)
except ValueError as e:
print(f"发生错误:{e}")
2. 让用户输入两个数字,然后尝试进行除法运算。如果除数为零则捕获异常并输出错误信息。
答案解析:
try:
num1 = int(input("请输入第一个数字:"))
num2 = int(input("请输入第二个数字:"))
result = num1 / num2
print(result)
except ZeroDivisionError as e:
print(f"发生错误:{e}")
(2)、多个异常处理练习
1. 编写一个程序,尝试打开一个不存在的文件,然后再尝试将一个非列表对象当作列表进行索引操作。捕获这两种不同类型的异常并输出相应的错误信息。
答案解析:
try:
with open("nonexistent_file.txt", "r") as f:
content = f.read()
obj = "not a list"
element = obj[0]
except FileNotFoundError as e:
print(f"文件不存在错误:{e}")
except TypeError as e:
print(f"类型错误:{e}")
2. 让用户输入一个数字,然后尝试将其转换为整数并进行一些运算。可能出现的值错误(用户输入非数字)和零除错误。捕获这两种异常并输出相应的错误信息。
答案解析:
try:
s = input("请输入一个数字:")
num = int(s)
result = 10 / num
print(result)
except ValueError as e:
print(f"值错误:{e}")
except ZeroDivisionError as e:
print(f"零除错误:{e}")
(3)、自定义异常练习
1. 定义一个自定义异常类`MyException`,当发生特定情况时抛出这个异常。然后在一个程序中使用这个自定义异常。
答案解析:
class MyException(Exception):
pass
try:
condition = True
if condition:
raise MyException("自定义异常发生")
except MyException as e:
print(f"自定义异常:{e}")
2. 定义一个函数,接收一个参数,如果参数小于零则抛出自定义异常。在主程序中调用这个函数并处理可能抛出的异常。
答案解析:
class NegativeNumberException(Exception):
pass
def check_number(num):
if num < 0:
raise NegativeNumberException("参数不能为负数")
return num
try:
result = check_number(-5)
print(result)
except NegativeNumberException as e:
print(f"错误:{e}")
九、文件操作
Python的文件操作是编程中非常基础且重要的部分,它允许你读取、写入、追加以及删除文件中的数据。下面,我将通过一些简单的练习代码来演示Python如何进行文件操作。
1. 打开文件
在Python中,使用open()
函数来打开文件,并返回一个文件对象。open()
函数的基本语法是:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
其中file是文件路径(可以是相对路径或绝对路径),mode是打开文件的模式(默认为'r',即只读模式)。其他参数大多数情况下可以省略。
2. 读取文件
示例:读取文件内容
# 打开文件并读取内容
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
这里使用了with语句,它可以确保文件在使用完毕后会被正确关闭。encoding='utf-8'是为了正确处理文本文件中的编码问题,尤其是当文件包含非ASCII字符时。
3. 写入文件
示例:向文件写入内容
# 打开(或创建)文件并写入内容
with open('output.txt', 'w', encoding='utf-8') as file:
file.write('Hello, Python!\n')
file.write('Welcome to file operations.')
注意,使用'w'
模式会覆盖文件原有内容。如果希望追加内容到文件末尾,应使用'a'
模式。
4. 追加文件
示例:向文件追加内容
# 打开文件并追加内容
with open('output.txt', 'a', encoding='utf-8') as file:
file.write('\nAnother line.')
5. 逐行读取文件
示例:逐行读取文件内容
# 打开文件并逐行读取
with open('example.txt', 'r', encoding='utf-8') as file:
for line in file:
print(line, end='') # end='' 用于避免打印额外的换行符
6. 读取文件并处理
示例:读取文件并计算行数
# 打开文件并计算行数
count = 0
with open('example.txt', 'r', encoding='utf-8') as file:
for line in file:
count += 1
print(f'The file has {count} lines.')
练习:
-
读取并打印文件内容:创建一个名为
data.txt
的文本文件,并在其中写入一些内容。然后编写一个Python脚本,读取并打印data.txt
的内容。 -
写入文件:编写一个Python脚本,向名为
results.txt
的文件中写入一些数据(例如,你的姓名和年龄)。 -
逐行处理文件:编写一个脚本,读取
data.txt
的每一行,并在控制台输出每一行的内容及其行号。
Python 基础语法依然是编程学习的重要基石。通过掌握变量与数据类型、运算符、控制流语句、函数、模块与包、面向对象编程、异常处理、文件操作以及常用内置函数和库等知识点,你将能够轻松应对各种编程任务。不断实践和探索,让 Python 成为你编程之旅的得力伙伴。
最后小编也给大家分享一份Python学习压缩包,里面的内容都是适合零基础小白的笔记,不懂编程也能听懂、看懂。
- 包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
① Python所有方向的学习路线图
,清楚各个方向要学什么东西
② 100多节Python课程视频
,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例
,学习不再是只会理论
④ 华为出品独家Python漫画教程
,手机也能学习
⑤ 历年互联网企业Python面试真题
,复习时非常方便****
👉[[优快云大礼包:《python安装工具&全套学习资料》免费分享]](安全链接,放心点击)