你好,Python
一个关于Python语法、变量赋值、和数据的速成介绍。
Python —— 1/7
本课程囊括了Python的核心技能,学完就可以开始使用Python学习大数据了。
我们将从Python的语法、变量赋值和算数运算符的简要介绍开始。如果你有Python的编程经验,你可以跳过直接开始着手练习。
Hello, Python!
- Python是以一个英国戏剧团 蒙提·派森 命名的,那么我们的第一个python项目就致敬他们的一部关于垃圾信息(Spam)的短剧吧。
- 就是图个乐子,尝试在分析下面代码时推测他们输出的结果(没有想法也没有关系)。
- 然后查看项目结果。
spam_amount = 0
print(spam_amount)
# 垃圾邮件订购、鸡蛋、垃圾邮件、垃圾邮件、培根和垃圾邮件(4份垃圾邮件)
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不需要我们做以下事情:
- 我们不需要在赋值前”声明“
spam_amount
; - 我们不需要告诉Python
spam_amount
的类型是什么;实际上,我们甚至可以继续将spam_amount
赋值为不同的类型,例如string和boolean。
- 我们不需要在赋值前”声明“
print(spam_amount)
0
- 函数调用:
print
是一个将传递的参数显示到屏幕的函数。我们调用函数通过在函数名后加括弧,并且将函数的输入(或参数)放在括弧里面。
# 垃圾邮件订购、鸡蛋、垃圾邮件、垃圾邮件、培根和垃圾邮件(4份垃圾邮件)
spam_amount = spam_amount + 4
- 代码的第一行是一个注释。在Python中,注释以
#
开头。 - 下面我们看到的是一个重新赋值的例子。为一个变量重新赋值的形式长得就和创建一个变量一模一样 —— 仍然使用
=
作为赋值运算符。 - 在这个例子中,我们赋给
spam_account
的值涉及对于原数的简单的算术运算。当遇到这一行时,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
的。But I don't want ANY spam!
的输出是在ifspam_account
为真的条件下执行的。但随后的代码(如print(viking_song)
)应该无论怎样都会执行,那么我们(和python)是如何知道这一切的呢? -
在
if
行的最后一个冒号:
表明一个新的代码块开始了。后续的行就是这个代码块的一部分。注: 你如果有编程经验,那么你可能知道其他语言使用
{
花括弧}
来标记代码块的开始和结束。python使用有意义的空格这一语法可能对于习惯其他语言的程序员有些不适应,但实际上,这可以使得代码更加连续,可读性更高,比那些不强制代码块缩进的语言要好。 -
后续的行处理
viking_song
没有使用四个空格,所以他们不属于if
的代码块。我们将在后面的函数定义哈循环中看到更多的相关例子。 -
这个代码片段也是我们第一次看到python中的 string。
"But I don't want ANY spam!"
- string可以使用双引号或单引号括住(但是这一的string已经有单引号作为字符了,我们如果不小心使用会使python混淆)。
viking_song = "Spam " * spam_amount
print(viking_song)
Spam Spam Spam Spam
*
运算符可以用来数乘(3 * 3 得9),但我们也可以用string乘一个数,用来得到一个重复多次的字符串。python为一些运算符如*
+
提供一个厚脸皮的省事小技巧:这些运算符可以根据运用的数据类型,从而实现不同的功能(这个的属于叫运算符重载)。
Python的数字和算术运算
我们已经看到了一个变量和数字相关的例子:
spam_amount = 0
- “数组”是一个不标准的说法,我们可以问python它是如何定义
spam_account
的类型的:
type(spam_amount)
int
- 是一个
int
—— integer的缩写。还有一个在python中经常遇到的数据类型:
type(19.95)
float
float
是一个带小数点的数字 —— 在表示重量和比例是非常有用。typep()
是第二个内置函数(继print()
之后),而且也是一个很好记的。在我们想要问python“这个是什么类型”时最有用。
谈到数字自然而然就会说到算术运算。我们已经见过+
*
。python自然包含了你计算器上的基本按钮:
运算符 | 名称 | 说明 |
---|---|---|
a+b | 加 | 求和 |
a-b | 减 | 求差 |
a*b | 乘 | 求积 |
a/b | 除 | 求商 |
a//b | 整除 | 求整数商 |
a%b | 取余 | 取余数 |
a**b | 幂 | 求幂 |
-a | 负 | 求负数 |
- 这有一个有趣的运算。你的计算器或许只有一个除,但python可以做两种,”除“是常见的那个:
print(5 / 2)
print(6 / 2)
2.5
3.0
- 他总返回一个浮点数。
//
运算符仅返回整数部分
print(5 // 2)
print(6 // 2)
2
3
- 你能想到他的用途吗?
运算顺序
我们之前学的算数就规定了个运算符的运算顺序。一些人这样记:括弧,幂,乘/除,加/减。
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 ?
total_height_meters = (hat_height_cm + my_height_cm) / 100
print("Height in meters =", total_height_meters)
Height in meters = 2.15
内置和数字运算有关的函数
- 最大
max
,最小min
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