Skip to content

Latest commit

 

History

History
529 lines (348 loc) · 16.6 KB

python-basics-syntax-data-types-and-control-structures.md

File metadata and controls

529 lines (348 loc) · 16.6 KB

Python 基础:语法、数据类型和控制结构

原文:www.kdnuggets.com/python-basics-syntax-data-types-and-control-structures

Python 基础:语法、数据类型和控制结构

作者提供的图片

你是一个初学者,想学习 Python 编程吗?如果是的话,这个适合初学者的教程将帮助你熟悉语言的基础知识。


我们的前三大课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业生涯。

2. Google 数据分析专业证书 - 提升你的数据分析技能

3. Google IT 支持专业证书 - 支持你的组织的 IT 需求


本教程将介绍 Python 的——相当于英语友好的——语法。你还将学习如何处理不同的数据类型、条件语句和循环。

如果你已经在开发环境中安装了 Python,请启动一个 Python REPL 并开始编写代码。或者如果你想跳过安装——立即开始编码——我建议你前往Google Colab并开始编写代码。

你好,Python!

在我们用 Python 编写经典的“Hello, world!”程序之前,先了解一下这门语言。Python 是解释型语言。这是什么意思?

在任何编程语言中,你编写的所有源代码都应该被翻译成机器语言。虽然像 C 和 C++这样的编译语言需要在程序运行之前获得整个机器代码,但解释器会解析源代码并即时解释。

创建一个 Python 脚本,输入以下代码并运行:

print("Hello, World!")

为了打印出Hello, World!,我们使用了print()函数,它是 Python 中的众多内置函数之一。

在这个超简单的例子中,请注意“Hello, World!”是一个序列——一串字符。Python 字符串由一对单引号或双引号界定。因此,要打印任何消息字符串,你可以使用print("<message_string>")

读取用户输入

现在让我们更进一步,使用input()函数从用户那里读取一些输入。你应该始终提示用户,让他们知道应该输入什么

这是一个简单的程序,它接收用户的名字作为输入,并向他们问好。

注释通过提供额外的上下文来帮助提高代码的可读性。Python 中的单行注释以#开头。

请注意,代码片段中的字符串前面有一个f。这样的字符串称为格式化字符串或 f-strings。要在 f-string 中替换变量的值,请在一对大括号中指定变量的名称,如下所示:

# Get user input
user_name = input("Please enter your name: ")

# Greet the user
print(f"Hello, {user_name}! Nice to meet you!")

当你运行程序时,系统会首先提示你输入,然后打印出问候信息:

Please enter your name: Bala
Hello, Bala! Nice to meet you!

让我们继续学习 Python 中的变量和数据类型。

Python 中的变量和数据类型

变量在任何编程语言中都像容器,用于存储信息。在我们编写的代码中,我们已经创建了一个变量user_name。当用户输入他们的名字(一个字符串)时,它会存储在user_name变量中。

Python 中的基本数据类型

让我们通过基本的数据类型在 Python 中逐一了解:intfloatstrbool,使用简单的示例逐步进行:

整数int):整数是没有小数点的整数。你可以这样创建整数并将其分配给变量:

age = 25
discount= 10

这些是将值分配给变量的赋值语句。在像 C 这样的语言中,你需要在声明变量时指定数据类型,但 Python 是动态类型语言。它从值中推断数据类型。因此,你可以重新分配变量以保存完全不同数据类型的值:

number = 1
number = 'one'

你可以使用type函数检查 Python 中任何变量的数据类型:

number = 1
print(type(number))

number是一个整数:

Output >>> <class 'int'>

我们现在将一个字符串值分配给number

number = 'one'
print(type(number))
Output >>> <class 'str'>

浮点数float):浮点数表示带有小数点的实数。你可以这样创建float数据类型的变量:

height = 5.8
pi = 3.14159

你可以对数值数据类型进行各种操作——加法、减法、整数除法、指数运算等。以下是一些示例:

# Define numeric variables
x = 10
y = 5

# Addition
add_result = x + y
print("Addition:", add_result)  # Output: 15

# Subtraction
sub_result = x - y
print("Subtraction:", sub_result)  # Output: 5

# Multiplication
mul_result = x * y
print("Multiplication:", mul_result)  # Output: 50

# Division (floating-point result)
div_result = x / y
print("Division:", div_result)  # Output: 2.0

# Integer Division (floor division)
int_div_result = x // y
print("Integer Division:", int_div_result)  # Output: 2

# Modulo (remainder of division)
mod_result = x % y
print("Modulo:", mod_result)  # Output: 0

# Exponentiation
exp_result = x ** y
print("Exponentiation:", exp_result)  # Output: 100000

字符串str):字符串是字符的序列,封装在单引号或双引号中。

name = "Alice"
quote = 'Hello, world!'

布尔值bool):布尔值表示TrueFalse,指示条件的真实性。

is_student = True
has_license = False

Python 在处理不同数据类型方面的灵活性使你能够有效地存储、执行各种操作和操控数据。

这是一个将我们迄今为止学到的所有数据类型结合在一起的示例:

# Using different data types together
age = 30
score = 89.5
name = "Bob"
is_student = True

# Checking if score is above passing threshold
passing_threshold = 60.0
is_passing = score >= passing_threshold

print(f"{name=}")
print(f"{age=}")
print(f"{is_student=}")
print(f"{score=}")
print(f"{is_passing=}")

这是输出结果:

Output >>>

name='Bob'
age=30
is_student=True
score=89.5
is_passing=True

超越基本数据类型

假设你正在管理一个教室中的学生信息。创建一个集合来存储所有学生的信息会比为每个学生重复定义变量更有帮助。

列表

列表是有序的项集合——用一对方括号括起来。列表中的项可以是相同或不同的数据类型。列表是可变的,这意味着你可以在创建后更改其内容。

这里,student_names包含学生的名字:

# List
student_names = ["Alice", "Bob", "Charlie", "David"]

元组

元组是类似于列表的有序集合,但它们是不可变的,这意味着你不能在创建后更改其内容。

假设你希望student_scores成为一个不可变的集合,包含学生的考试成绩。

# Tuple
student_scores = (85, 92, 78, 88)

字典

字典是键值对的集合。字典的键应该是唯一的,它们映射到对应的值。字典是可变的,允许你将信息与特定键关联起来。

在这里,student_info包含关于每个学生的姓名和分数作为键值对:

student_info = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}

但请稍等,还有一种更优雅的方法来创建 Python 中的字典。

我们即将学习一个新概念:字典推导式。如果一开始不清楚没关系。你可以随时学习更多并在以后继续研究。

但推导式相当直观。如果你想让student_info字典的键是学生姓名,对应的值是他们的考试分数,你可以这样创建字典:

# Using a dictionary comprehension to create the student_info dictionary
student_info = {name: score for name, score in zip(student_names, student_scores)}

print(student_info)

请注意我们如何使用zip()函数同时遍历student_names列表和student_scores元组。

Output >>>

{'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}

在这个例子中,字典推导式直接将student_names列表中的每个学生姓名与student_scores元组中的对应考试分数配对,创建了student_info字典,其中姓名作为键,分数作为值。

现在你已经熟悉了基本数据类型以及一些序列/可迭代对象,让我们进入讨论的下一部分:控制结构

Python 中的控制结构

当你运行一个 Python 脚本时,代码按脚本中的顺序依次执行。

有时,你需要实现逻辑来根据特定条件控制执行流程,或遍历可迭代对象以处理其中的项目。

我们将学习如何通过 if-else 语句实现分支和条件执行。我们还将学习如何使用循环遍历序列,以及循环控制语句 break 和 continue。

If 语句

当你需要仅在特定条件为真时执行一块代码时,你可以使用if语句。如果条件为假,这块代码将不会被执行。

Python 基础:语法、数据类型和控制结构

图片由作者提供

考虑这个例子:

score = 75

if score >= 60:
    print("Congratulations! You passed the exam.")

在这个例子中,只有当score大于或等于 60 时,if块中的代码才会被执行。由于score是 75,因此将打印出“恭喜!你通过了考试。”

Output >>> Congratulations! You passed the exam.

If-else 条件语句

if-else语句允许你在条件为真时执行一块代码,而在条件为假时执行另一块代码。

Python 基础:语法、数据类型和控制结构

图片由作者提供

让我们基于测试分数的例子进行扩展:

score = 45

if score >= 60:
    print("Congratulations! You passed the exam.")
else:
    print("Sorry, you did not pass the exam.")

在这里,如果score小于 60,else块中的代码将被执行:

Output >>> Sorry, you did not pass the exam.

If-elif-else 结构

if-elif-else语句用于在有多个条件需要检查时。它允许你测试多个条件,并为第一个满足条件的情况执行相应的代码块。

如果if和所有elif语句中的条件都为假,则执行else块。

Python 基础:语法、数据类型和控制结构

图片来源:作者

score = 82

if score >= 90:
    print("Excellent! You got an A.")
elif score >= 80:
    print("Good job! You got a B.")
elif score >= 70:
    print("Not bad! You got a C.")
else:
    print("You need to improve. You got an F.")

在这个例子中,程序检查score是否符合多个条件。第一个满足条件的代码块将被执行。由于score是 82,我们得到:

Output >>> Good job! You got a B.

嵌套if语句

嵌套的if语句用于在另一个条件内检查多个条件。

name = "Alice"
score = 78

if name == "Alice":
    if score >= 80:
        print("Great job, Alice! You got an A.")
    else:
        print("Good effort, Alice! Keep it up.")
else:
    print("You're doing well, but this message is for Alice.")

在这个例子中,有一个嵌套的if语句。首先,程序检查name是否是"Alice"。如果为真,它会检查score。由于score是 78,因此执行内部的else块,打印"Good effort, Alice! Keep it up."。

Output >>> Good effort, Alice! Keep it up.

Python 提供了几种循环结构来迭代集合或执行重复任务。

for循环

在 Python 中,for循环提供了一种简洁的语法,让我们能够迭代现有的可迭代对象。我们可以这样迭代student_names列表:

student_names = ["Alice", "Bob", "Charlie", "David"]

for name in student_names:
    print("Student:", name)

上述代码的输出为:

Output >>>

Student: Alice
Student: Bob
Student: Charlie
Student: David

while循环

如果你想在某个条件为真时执行一段代码,你可以使用while循环。

让我们使用相同的student_names列表:

# Using a while loop with an existing iterable

student_names = ["Alice", "Bob", "Charlie", "David"]
index = 0

while index < len(student_names):
    print("Student:", student_names[index])
    index += 1

在这个例子中,我们有一个包含学生姓名的student_names列表。我们使用while循环通过跟踪index变量来迭代列表。

循环会继续进行,只要index小于列表的长度。在循环内部,我们打印每个学生的姓名,并增加index以移动到下一个学生。注意使用len()函数来获取列表的长度。

这与使用for循环迭代列表得到的结果相同:

Output >>>

Student: Alice
Student: Bob
Student: Charlie
Student: David

我们使用一个while循环,从列表中弹出元素直到列表为空:

student_names = ["Alice", "Bob", "Charlie", "David"]

while student_names:
    current_student = student_names.pop()
    print("Current Student:", current_student)

print("All students have been processed.")

列表方法pop移除并返回列表中的最后一个元素。

在这个例子中,while循环只要student_names列表中还有元素就会继续进行。在循环内部,使用pop()方法来移除并返回列表中的最后一个元素,并打印当前学生的姓名。

循环会继续,直到所有学生都被处理完毕,并在循环外打印最终消息。

Output >>>

Current Student: David
Current Student: Charlie
Current Student: Bob
Current Student: Alice
All students have been processed.

for循环通常在迭代现有可迭代对象如列表时更为简洁且易读。但while循环在循环条件更复杂时可以提供更多控制。

循环控制语句

break会提前退出循环,而continue会跳过当前迭代的其余部分并进入下一次迭代。

这是一个示例:

student_names = ["Alice", "Bob", "Charlie", "David"]

for name in student_names:
    if name == "Charlie":
        break
    print(name)

name为 Charlie 时,控制从循环中跳出,输出结果为:

Output >>>
Alice
Bob

模拟 Do-While 循环行为

在 Python 中,没有像某些其他编程语言中的 do-while 循环。然而,你可以使用带有 break 语句的 while 循环来实现相同的行为。下面是如何在 Python 中模拟 do-while 循环:

while True:
    user_input = input("Enter 'exit' to stop: ")
    if user_input == 'exit':
        break

在这个例子中,循环将无限运行,直到用户输入“exit”。循环至少运行一次,因为条件最初设置为 True,然后在循环内部检查用户的输入。如果用户输入“exit”,则会执行 break 语句,从而退出循环。

这是一个示例输出:

Output >>>
Enter 'exit' to stop: hi
Enter 'exit' to stop: hello
Enter 'exit' to stop: bye
Enter 'exit' to stop: try harder!
Enter 'exit' to stop: exit

请注意,这种方法类似于其他语言中的do-while循环,其中循环体在检查条件之前至少会执行一次。

总结与下一步

希望你能顺利跟随这个教程进行编码。现在你已经掌握了 Python 的基础知识,是时候开始编码一些超级简单的项目,以应用你所学到的所有概念了。

Bala Priya C 是来自印度的开发者和技术作家。她喜欢在数学、编程、数据科学和内容创作的交汇点上工作。她的兴趣和专长领域包括 DevOps、数据科学和自然语言处理。她喜欢阅读、写作、编码和咖啡!目前,她正在通过撰写教程、使用指南、观点文章等,与开发者社区分享她的知识。

更多相关内容