这门课程包含的内容适用于初级的数据科学家们来提升自己的python技能。其中,第一节课我们会简单得介绍一下python的语法,变量赋值和几何运算。

你好,Python!

Python是以英国喜剧团体巨蟒组(Monty Python)的名字命名的,所以我们将让我们的第一个python程序向他们关于SPAM的短剧致敬。

只是为了好玩,尝试阅读下面的代码并预测运行时将要执行的操作。(如果你不知道,那没关系!)然后单击“运行”按钮以查看我们程序的结果。

spam_amount = 0
print(spam_amount)
#Ordering Spam, egg, Spam, Spam, bacon and Spam (4 more servings of Spam)
spam_amount = spam_amount + 4
if spam_amount > 0:
print("But I don't want ANY spam!")
viking_song = "Spam " * spam_amount
print(viking_song)
以上的代码包含了很多东西。这段搞笑的程序演示了python代码的许多重要方面以及它的工作原理。 让我们将从上到下一一查看代码。
spam_amount = 0
变量赋值:这里我们创建一个名为spam_amount的变量,并使用等号(=)将其赋值为0,这称为赋值运算符。
备注:如果你已经使用某些其他语言(如Java或C ++)编程,你可能会注意到python不需要我们在这里做的一些事情:
我们不需要在分配之前“声明”spam_amount是什么
我们不需要提前确定spam_amount的类型。 实际上,我们甚至可以继续重新赋值给spam_amount来引用不同类型的东西,比如字符串或布尔值。
print(spam_amount)
函数调用: print是一个python函数,显示在屏幕上传递给它的值。 我们通过在print后添加括号并将输入(或参数)放在这些括号中的函数中来调用函数。
# Ordering Spam, egg, Spam, Spam, bacon and Spam (4 more servings of Spam)
spam_amount = spam_amount + 4
上面的第一行是注释。 在python中,注释以#符号开头。
接下来我们看一个重新赋值的例子。 重新分配现有变量的值与创建变量的方式相同 - 它仍然使用=赋值运算符。
在这种情况下,我们分配给spam_amount的值涉及对其先前值的一些简单算术。当遇到这一行时,python会先计算在等号右侧的公式(0 + 4 = 4),然后将该值赋给左侧的变量。
if spam_amount > 0:
print("But I don't want ANY spam!")
现在我们不会谈论过多关于“条件”,但是,即使你以前从未编码过,你也可以猜到它的作用。 Python因其可读性和简单性而备受推崇。
if行末尾的冒号(:)表示新的“代码块”正在启动。缩进的后续行是该代码块的一部分。其他一些语言使用{大括号}来标记代码块的开头和结尾。
在python里,空白是有意义的,对于习惯于其他语言的程序员来说可能是令人惊讶的,但实际上它可以导致比不强制执行代码块缩进的语言更一致和可读的代码。
viking_song = "Spam Spam Spam"
print(viking_song)
处理viking_song的后续行没有缩进额外的4个空格,因此它们不是if的代码块的一部分。 稍后在定义函数和使用循环时,我们将看到更多缩进代码块的示例。
"But I don't want ANY spam!"
字符串可以用双引号或单引号标记。 (但是因为这个特定的字符串包含单引号字符(在don't里),所以我们可能会混淆python,因而试图用双引号括起来。)
viking_song = "Spam " * spam_amount
print(viking_song)
上面的乘号运算可用来乘以两个数字(3 * 3的计算结果为9),但有趣的是,我们还可以将一个字符串乘以一个数字,以获得多次重复的版本。
python提供了许多有意思的节省时间的技巧,其中乘号和加号等运算符具有不同的含义,具体取决于它们应用于何种类型的东西。(技术术语是运算符重载)
python中的数字和算术
spam_amount = 0
“Number”是一个很好的非正式名称,但如果我们想要更具技术性,我们可以问python如何描述spam_amount的类型:
type(spam_amount)
这是整数(integer)的缩写。 我们在python中经常会遇到另一种数字:
type(19.95)
float是一个带小数位的数字 - 非常适用于表示重量或比例之类的东西。
type()是我们见过的第二个内置函数(在print()之后),它是另一个值得记住的好函数,能够问python“这是什么类型的东西”非常有用。
关于处理数字的一个方面是执行算术。 我们已经看到加号用于加法,乘号用于乘法(排序)。 python还为我们提供了计算器上其余基本按钮的功能:
Operator
Name
Description
a + b
Addition
Sum of a and b
a - b
Subtraction
Difference of a and b
a * b
Multiplication
Product of a and b
a / b
True division
Quotient of a and b
a // b
Floor division
Quotient of a and b, removing fractional parts
a % b
Modulus
Integer remainder after division of a by b
a ** b
Exponentiation
a raised to the power of b
-a
Negation
the negative of a
这里有一个有趣的观察是,虽然你的计算器可能只有一个按钮用于除法,但python可以做两种。 让我们先来看看普通的计算器可以做到的算法:
print(5 / 2)
print(6 / 2)
Python不总是给我们一个小数的结果。
//运算符给我们一个向下舍入到下一个整数的结果。
print(5 // 2)
print(6 // 2)
运算顺序
我们在小学学到的有关运算先后顺序的规定。 有些人通过诸如PEMDAS之类的助记符来记住这些 - 括号(Parentheses),指数(Exponents),乘法/除法(Multiplication/Division),加法/减法(Addition/Subtraction)。
Python遵循类似的规则来首先执行哪些计算。 他们大多非常直观。
8 - 3 + 2
-3 + 4 * 2
但是有时默认的操作顺序不是我们想要的:
hat_height_cm = 25
my_height_cm = 190
# 当我带上帽子的时候,我有多高?
total_height_meters = hat_height_cm + my_height_cm / 100
print("Height in meters =", total_height_meters, "?")
括号在这里很有用。 我们可以添加它们以强制python用想要的任何顺序计算表达式。
total_height_meters = (hat_height_cm + my_height_cm) / 100
print("Height in meters =", total_height_meters)
内置函数
min和max分别返回其参数的最小值和最大值...
print(min(1, 2, 3))
print(max(1, 2, 3))
abs返回它参数的绝对值:
print(abs(32))
print(abs(-32))
除了作为python的两个主要数字类型的名称之外,int和float也可以被称为将其参数转换为相应类型的函数:
print(float(10))
print(int(3.33))
# They can even be called on strings!
print(int('807') + 1)