# 加法
2 + 2
4
在本课程中,你将学习使用 Python 的基础知识。
要开始,请打开你喜欢的 Python 环境(例如 Jupyter Notebook、VS Code 或 PyCharm),并创建一个新的 Python 文件或笔记本。
接下来,根据你的环境,保存文件,文件名如“coding_basics.py”或“coding_basics.ipynb”。
你现在应该将本课程中的所有代码输入到该文件中。
注释是 Python 不会进行运行的文本。它们用于解释代码在做什么。
使用符号 #
,读作“井号”或“pound”,来开始注释。同一行中 #
之后的任何内容都会被忽略。例如:
# 加法
2 + 2
4
如果我们只是尝试在代码上方写 Addition
,会导致错误:
Addition2 + 2
NameError: name 'Addition' is not defined
我们可以将注释放在代码的同一行,但它需要放在代码之后。
2 + 2 # 加法
4
要编写多行注释,你可以添加更多的 #
符号:
# 加法
# 添加两个数字
2 + 2
4
或者你可以使用三引号 '''
或 """
:
'''
加法:
下面我们添加两个数字
'''
2 + 2
4
或者:
"""
加法:
下面我们添加两个数字
"""
2 + 2
4
注释:代码中被 Python 忽略的一段文本。注释用于解释代码在做什么,旨在供人类阅读。
以下哪些代码块是有效的 Python 注释方式?
# 添加两个数字
2 + 2
2 + 2 # 添加两个数字
''' 添加两个数字
2 + 2
# 添加两个数字 2 + 2
通过尝试运行每个代码块来检查你的答案。
如你所见,Python 可以按照标准方式作为计算器使用。
以下是一些其他基本算术运算的例子:
2 - 2 # 二减二
0
2 * 2 # 二乘二
4
2 / 2 # 二除以二
1.0
2 ** 2 # 二的二次方
4
还有一些你可能会遇到的其他运算符。例如,在Python中,使用%
符号表示模数运算,它返回除法的余数。
10 % 3 # 十模三
1
//
是地板除运算符,它先除法然后向下取整到最接近的整数。
10 // 3 # 十地板除三
3
猜测以下代码块的结果,然后运行它们以检查你的答案:
5 % 4
5 // 4
Python 遵循标准的 PEMDAS 运算顺序(括号、指数、乘法、除法、加法、减法)。
例如,乘法在加法之前计算,所以下面的结果是 6
。
2 + 2 * 2
6
以下哪些代码块将计算为 10
?
2 + 2 * 4
6 + 2 ** 2
我们还可以使用 math
库来进行更复杂的数学运算。例如,我们可以使用 math.sqrt
函数计算一个数的平方根。
import math
100) # 平方根 math.sqrt(
10.0
或者我们可以使用 math.log
函数计算一个数的自然对数。
import math
100) # 对数 math.log(
4.605170185988092
math.sqrt
和 math.log
是 Python 函数 的例子,其中一个 参数(例如 100
)被传递给函数以进行计算。
我们将在后面学习更多关于函数的内容。
函数:执行特定任务的可重用代码块。函数通常接受输入(称为参数)并返回输出。
使用 math
库,计算 81 的平方根。
在下方编写你的代码并运行以检查你的答案:
# 你的代码在这里
考虑以下代码,它生成一个 1 到 10 之间的随机数:
import random
1, 10) random.randint(
10
在这段代码中,确定库、函数和函数的参数。
良好的间距使你的代码更易读。在 Python 中,两个简单的间距实践可以大大提高代码的可读性:使用空行和在运算符周围添加空格。
Python 使用缩进来表示循环、函数和其他代码块的开始和结束。我们将在后面的课程中详细介绍这一点。
目前,需要注意的一件事是避免在代码前意外加入空格。
例如,考虑以下代码块:
import math
# 获取 100 的平方根
100) math.sqrt(
尝试运行这段代码会导致错误:
IndentationError: unexpected indent
这是由于 math.sqrt
函数前的空格。我们可以通过删除空格来修复它。
import math
# 获取 100 的平方根
100) math.sqrt(
使用空行来分隔代码的不同部分。
例如,考虑以下代码块:
# 设置数字
= 5
x = 10
y # 执行计算
= x + y
result # 显示结果
print(result)
15
我们可以添加空行来分隔代码的不同部分:
# 设置数字
= 5
x = 10
y
# 执行计算
= x + y
result
# 显示结果
print(result)
15
空行有助于将代码组织成逻辑部分,类似于书写中的段落。
在数学运算符周围添加空格可以提高可读性:
# 难以阅读
=5+3*2
x
# 容易阅读
= 5 + 3 * 2 x
在列举项目时,在每个逗号后添加一个空格:
# 难以阅读
print(1,2,3)
# 容易阅读
print(1, 2, 3)
这一做法遵循书面英语的惯例,我们在逗号后加一个空格。它使代码中的项目列表更易读。
如你所见,为了在 Python 中存储一个值以供将来使用,我们使用 赋值运算符 =
将其赋值给一个 变量。
= 2 + 2 # 将 `2 + 2` 的结果赋值给名为 `my_var` 的变量
my_var print(my_var) # 打印 my_var
4
现在你已经创建了变量 my_var
,Python 知道它并将在这个 Python 会话中跟踪它。
你可以打开你的环境查看你创建了哪些变量。这取决于你的 IDE 而有所不同。
那么,变量到底是什么?可以将其视为一个命名的容器,可以保存一个值。当你运行以下代码:
= 20 my_var
你是在告诉 Python,“将数字 20 存储在名为 ‘my_var’ 的变量中”。
一旦代码运行,我们可以用 Python 术语说,“变量 my_var
的值是 20”。
尝试为以下代码块编写类似的句子:
= "Joanna" first_name
运行这段代码后,我们可以用 Python 术语说,“变量 first_name
的值是 Joanna”。
像 “Joanna” 这样的文本值称为 字符串,而像 20 这样的数字称为 整数。如果数字有小数点,则称为 浮点数,是“浮点数”(floating-point number)的简称。
以下是这三种变量类型的示例:
# 字符串变量
= "Joanna"
first_name
# 整数变量
= 5
age
# 浮点数变量
= 1.4 height
你可以使用 type()
函数检查变量的类型。
print(type(first_name))
print(type(age))
print(type(height))
<class 'str'>
<class 'int'>
<class 'float'>
变量:一个可以保存值的命名容器。在 Python 中,变量可以存储不同类型的数据,包括数字、字符串和更复杂的对象。
重新赋值变量就像是更改容器的内容。
例如,之前我们运行了这段代码,将值 “Joanna” 存储在 first_name
变量中:
= "Joanna" first_name
要将其更改为不同的值,只需运行一个新的赋值语句并使用新值:
= "Luigi" first_name
你可以打印变量以观察变化:
first_name
'Luigi'
大部分时间你将在 Python 中操作变量。让我们看一些快速的例子。
你可以对变量运行简单的命令。例如,下面我们将值 100
存储在变量中,然后对变量取平方根:
import math
= 100
my_number math.sqrt(my_number)
10.0
Python 将 my_number
视为数字 100,因此能够计算其平方根。
你还可以将现有变量组合起来创建新变量。例如,输入以下代码,将 my_number
加到自身,并将结果存储在名为 my_sum
的新变量中:
= my_number + my_number
my_sum my_sum
200
my_sum
的值应该是多少?先猜测,然后通过打印来检查。
Python 还允许我们使用 +
运算符连接字符串。例如,我们可以连接 first_name
和 last_name
变量来创建一个名为 full_name
的新变量:
= "Joanna"
first_name = "Luigi"
last_name = first_name + " " + last_name
full_name full_name
'Joanna Luigi'
考虑以下代码。变量 answer
的值是多少?想一想,然后运行代码检查你的答案。
= 9
eight = eight - 8
answer answer
尽管在数据分析中不常用,但 Python 的 input()
函数是一个很酷的 Python 功能,你应该了解。它允许你获取用户输入。
这是一个简单的例子。我们可以请求用户输入并将其存储在名为 name
的变量中。
= input() name
然后我们可以向用户打印一个问候语。
print("Hello,", name)
我们还可以在输入提示中包含一个问题:
= input('What is your name? ')
name print("Hello,", name)
让我们看另一个例子。我们将告诉用户他们名字中有多少个字母。
= input('What is your name? ')
name print("There are", len(name), "letters in your name")
例如,如果你运行这段代码并输入 “Kene”,你可能会看到:
What is your name? Kene
There are 4 letters in your name
编写一个简短的程序,询问用户他们最喜欢的颜色,然后打印一条消息,说“xx 颜色也是我最喜欢的颜色!”,其中 xx 是他们输入的颜色。通过运行程序并输入一个颜色来测试你的程序。
在 Python 中使用变量时,你会遇到的最常见错误之一是 NameError
。当你尝试使用一个尚未定义的变量时,就会发生这种错误。例如:
= 48 # 定义 `my_number`
my_number + 2 # 尝试将 2 加到 `my_number` My_number
如果你运行这段代码,会得到如下错误信息:
NameError: name 'My_number' is not defined
在这里,Python 返回错误信息,因为我们尚未创建(或 定义)变量 My_number
。记住,Python 是区分大小写的;我们定义了 my_number
,但尝试使用 My_number
。
要修复此问题,确保你使用的是正确的变量名:
= 48
my_number + 2 # 这将工作并返回 50 my_number
50
始终仔细检查你的变量名以避免此错误。记住,在 Python 中,my_number
、My_number
和 MY_NUMBER
都是不同的变量。
当你开始学习 Python 时,处理错误可能会令人沮丧。它们通常很难理解。
但习惯读取和理解错误很重要,因为你在编码职业生涯中会经常遇到错误。
稍后,我们将向你展示如何使用像 ChatGPT 这样的语言模型(LLMs)来调试错误。
但在此之前,最好尝试自己发现和修复错误。
下面的代码返回一个错误。为什么?(仔细看看)
= "Kene"
my_1st_name = "Nwosu"
my_last_name
print(my_Ist_name, my_last_name)
提示:看看变量名。它们是否一致?
计算机科学中只有 两件难事:缓存失效和 命名事物。
— Phil Karlton.
因为你在 Python 中的很多工作涉及与你创建的变量互动,给这些变量选择智能的名字很重要。
命名变量很难,因为名字应该既 简短(这样你可以快速键入它们)又 信息丰富(这样你可以轻松记住变量包含的内容),而这两个目标往往相冲突。
因此,像下面这样太长的名字是不好的,因为它们需要很长时间来输入。
sample_of_the_ebola_outbreak_dataset_from_sierra_leone_in_2014
而像 data
这样的名字也是不好的,因为它不具有信息性;名字没有很好地说明变量包含什么。
随着你编写更多的 Python 代码,你将学会如何编写简短且信息丰富的名字。
对于由多个单词组成的名字,有几种约定用于分隔单词:
= "蛇形命名使用下划线"
snake_case = "骆驼命名法将新单词首字母大写(但不包括第一个单词)"
camelCase = "帕斯卡命名法将所有单词包括第一个单词都首字母大写" PascalCase
我们推荐 snake_case,它使用全小写单词,并用 _
分隔单词。
还要注意,变量名有一些限制:
2014_data
不是一个有效的名字(因为它以数字开头)。尝试运行下面的代码块看看会得到什么错误。2014_data = "This is not a valid name"
_
)。因此 ebola-data
或 ebola~data
或带空格的 ebola data
都不是有效的名字。-data = "This is not a valid name" ebola
~data = "This is not a valid name" ebola
虽然我们在 Python 中推荐使用 snake_case 作为变量名,但你可能会看到其他约定,如 camelCase 或 PascalCase,特别是在使用其他语言的代码或某些 Python 库时。在你自己的代码中要保持一致,并遵循你所工作的任何项目或团队的惯例。
以下哪些变量名在 Python 中是有效的?尝试在不运行代码的情况下确定,然后通过尝试运行每行代码来检查你的答案。
然后修复无效的变量名。
1st_name = "John"
= "Doe"
last_name -name = "John Doe"
full= 30
age_in_years @job = "Developer"
current= "555-1234"
PhoneNumber = 42 _secret_code
在本课程中,我们涵盖了 Python 编程的基本构建块:
#
进行单行注释和三引号进行多行注释。input()
函数获取用户输入。这些概念构成了 Python 编程的基础。随着你继续学习,你将以这些基础为基础,创建更复杂和强大的程序。记住,实践是掌握这些概念的关键!