Kaggle课程官方链接:Hello, Python
本专栏旨在Kaggle官方课程的汉化,让大家更方便地看懂。
Python语法、变量赋值和数字的快速介绍
本课程涵盖了您需要的关键Python技能,以便您可以开始将Python用于数据科学。这门课程非常适合那些有一些编程经验的人,他们想把Python添加到他们的技能库中。(如果你是第一次编程,我们鼓励你查看我们的编程入门课程,该课程专为希望开始使用Python的完全初学者而设计。)
我们将从Python语法、变量赋值和算术运算符的简要概述开始。
Python是以英国喜剧团Monty Python命名的,所以我们将制作我们的第一个Python程序来向他们关于垃圾邮件的短剧致敬。
只是为了好玩,试着阅读下面的代码,并预测它在运行时会做什么。(如果你不知道,那很好!)
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)
0 But I don't want ANY spam! Spam Spam Spam Spam
这个程序演示了Python代码的许多重要方面,以及它是如何工作的。让我们自上而下地查看代码。
spam_amount = 0
变量赋值:在这里,我们创建了一个名为spam_amount的变量,并使用=将其赋值为0,这被称为赋值运算符。
注意:如果你用某些其他语言(如Java或C++)编程,你可能会注意到Python在这里不需要我们做的一些事情:
print(spam_amount)
0
函数调用:.print是一个Python函数,它在屏幕上显示传递给它的值。我们调用函数的方法是在函数名后面加上括号,然后将函数的输入(或参数)放在括号中。
# 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!")
viking_song = "Spam Spam Spam"
print(viking_song)
But I don't want ANY spam! Spam Spam Spam
稍后我们不会过多讨论“条件语句”,但是,即使你以前从未编码过,你也可能猜到它的作用。Python因其可读性和简单性而备受推崇。
请注意我们是如何指示哪个代码属于if的。
“但我不想要任何垃圾邮件!”只有在spam_amount为正时才应该打印出来。
但无论发生什么,都应该执行后面的代码(如print(viking_song))。
我们(和Python)是如何知道这一点的?
if行末尾的冒号(:)表示新的代码块正在开始。缩进的后续行是该代码块的一部分。
注意:如果你以前编码过,你可能知道其他一些语言使用{花括号}来标记代码块的开始和结束。Python使用有意义的空格可能会让习惯于其他语言的程序员感到惊讶,但在实践中,它可以比不强制缩进代码块的语言产生更一致和可读的代码。
后面处理viking_song的行没有额外缩进4个空格,因此它们不是if代码块的一部分。
稍后,当我们定义函数和使用循环时,我们将看到更多缩进代码块的示例。
这段代码也是我们在Python中第一次看到字符串:
"But I don't want ANY spam!"
字符串可以用双引号或单引号标记。(但是,由于这个特定的字符串包含一个单引号字符,除非我们小心,否则我们可能会试图用单引号将其括起来,从而混淆Python。)
viking_song = "Spam " * spam_amount
print(viking_song)
Spam Spam Spam Spam
*运算符可用于将两个数字相乘(3*3的结果为9),但我们也可以将字符串乘以一个数字,得到一个重复了那么多次的版本。Python提供了许多像这样厚颜无耻的节省时间的小技巧,其中像*和+这样的运算符根据它们应用于的对象而具有不同的含义。(技术术语是运算符重载。)
我们已经看到了一个包含上述数字的变量示例:
spam_amount = 0
“Number”是一个很好的非正式名称,但如果我们想更具技术性,我们可以问Python它将如何描述spam_amount是什么类型的东西:
type(spam_amount)
int
它是整数的int缩写。还有一种我们在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)
2.5 3.0
它总是给我们一个浮动。
//运算符给我们一个四舍五入到下一个整数的结果。
print(5 // 2)
print(6 // 2)
2 3
你能想到这在哪里有用吗?你很快就会在编码挑战中看到一个例子。
我们在小学学的算术对运算的求值顺序有约定。
有些人用助记符记住这些,如PEMDAS-括号、指数、乘法/除法、加法/减法。
Python遵循类似的规则,即首先执行哪些计算。它们大多非常直观。
8 - 3 + 2
7
-3 + 4 * 2
5
有时默认的操作顺序不是我们想要的:
hat_height_cm = 25
my_height_cm = 190
# How tall am I, in meters, when wearing my hat?
total_height_meters = hat_height_cm + my_height_cm / 100
print("Height in meters =", total_height_meters, "?")
Height in meters = 26.9 ?
括号在这里很有用。你可以添加它们来强制Python以你想要的任何顺序计算子表达式。
total_height_meters = (hat_height_cm + my_height_cm) / 100
print("Height in meters =", total_height_meters)
Height in meters = 2.15
min和max分别返回其参数的最小值和最大值。。。
print(min(1, 2, 3))
print(max(1, 2, 3))
1 3
abs返回参数的绝对值:
print(abs(32))
print(abs(-32))
32
32
除了作为Python两种主要数值类型的名称外,int和float也可以被称为将其参数转换为相应类型的函数:
print(float(10))
print(int(3.33))
# They can even be called on strings!
print(int('807') + 1)
10.0 3 808
现在是你的机会。试试你的第一个Python编程练习!