在开发环境进行学习

在开发环境进行学习

在本节中,我们搭建自己的开发环境,并在其中编写、运行我们的代码。

在本章节中,我们在“文本编辑器 + 终端”的开发环境下进行代码的编写和运行。你可能听说过使用 Windows 系统自带的记事本来编写代码的说法。

img

记事本几乎成了江湖传说

实际上,记事本会在文件开始的地方标注 UTF-8 BOM 信息,导致程序运行出现某些错误,请不要使用记事本编写代码;更不要用 Word,它甚至保存的不是纯文本。

华山论剑

工欲善其事,必先利其器,推荐几款文本编辑器:

  1. Visual Studio Code,简称 VScode 或 VSC,跨平台。
  2. Atom,GitHub 出品的文本编辑器,跨平台。
  3. Sublime Text,曾经占有率很高,跨平台。
  4. Vim,编辑器之神,Linux 平台。
  5. GNU Emacs,神的编辑器,Linux 平台。

你可以自行选择自己平台的编辑器,本教程基于 VScode。VScode 由微软出品,作为现代化的文本(代码)编辑器,为几乎所有的主流开发语言提供支持,性能极其出色,完备易用的扩展,美观现代的外观,出色的本地化服务,值得每一个开发者尝试。

配置 VScode

安装汉化

VScode 有优秀的本地化支持,通过安装 Chinese (Simplified) Language Pack for Visual Studio Code 拓展实现。

img

安装完毕后,按提示在 locale.json 文件中添加 "locale": "zh-cn" 以加载语言包。

安装 Python 调试功能

img

安装 Python 拓展,打开需要调试的页面,按下键盘上的 F5 ,按提示自动生成 launch.json 文件,即可在 VScode 内运行 Python 文件。

起步

一切就绪,现在我们正式开始 Python 的学习,方便起见,直接在桌面创建一个名为 hello.py 的文件,对于 Windows 平台,你可以用新建文本文档并重命名的方式。用 VScode 将其打开,输入我们熟悉的 :

1
print("hello, world")

print() 是我们学习到的第一个函数(Function),它的作用是在屏幕上打印(这听起来可能有点奇怪)字符,print 是”函数名“,括号 () 里面是它的”参数“,一个完整的语句,都由这样的结构构成。

用成对的引号扩起表示这是一个”字符串“数据类型,可以是单引号或者双引号,但是不要混用。

1
2
3
4
5
print("hello, world!") # ✔
print('hello, world!') # ✔

print('hello, world!") # ❌
print("hello, world!') # ❌

尝试输入其它的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
print("我不想做个平庸的人类
我不想囿于双手,双脚和双眼

我想要了解
我想要操纵

我想要创造

我相信逻辑
我相信机器
我相信代码

我知道他们是熔炉,是铁锤,是建造世界的砖瓦
我知道他们是法杖,是咒语,拥有改变世界的魔法

我不关心是谁创造了这个世界
我只关心我们正在创造的世界")
# 摘自知乎@tefx

会发现程序会报错:

img

转义

这是因为我们直接在字符串中输入了换行,在代码中,应用 \n 实现换行:

1
2
print("我不想做个平庸的人类\n我不想囿于双手,双脚和双眼\n\n我想要了解\n我想要操纵\n我想要创造\n\n我相信逻辑\n我相信机器\n我相信代码\n\n我知道他们是熔炉,是铁锤,是建造世界的砖瓦\n我知道他们是法杖,是咒语,拥有改变世界的魔法\n\n我不关心是谁创造了这个世界\n我只关心我们正在创造的世界")
# 摘自知乎@tefx

如同 \n 这样反斜杠加字符的被称为”转义字符“。

三引号

当然,这很麻烦,我们还可以这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
print("""我不想做个平庸的人类
我不想囿于双手,双脚和双眼

我想要了解
我想要操纵
我想要创造

我相信逻辑
我相信机器
我相信代码

我知道他们是熔炉,是铁锤,是建造世界的砖瓦
我知道他们是法杖,是咒语,拥有改变世界的魔法

我不关心是谁创造了这个世界
我只关心我们正在创造的世界""")
# 摘自知乎@tefx

img

是的,输入三对引号即可保留所有格式,这是 Python 非常方便的一点。

input 函数

print() 函数用于输出,input() 函数则用于输入,它的作用是获取用户输入的内容,它的参数用于提示用户,如:

1
input("请输入你的名字:")

可以结合 input() 函数嵌套使用,如:

1
print("你的名字是:", input("请输入你的名字:"))

越内部的小括号优先级越高,程序将先执行 input() 语句并将结果作用于 print() 语句,效果如图:

img

变量

我们还可以用“变量”来保存数据,在 Python 中,定义和调用变量非常容易:

1
name = "谭小蝶"

变量的概念,简单来说,基本上和数学中方程的未知数是一致的。只是在计算机程序中,变量不仅可以是数字,还可以是任意的数据类型,自然也包括上述的字符串。

为了便于理解,你还可以把变量想象成一个可以装物品的盒子,这个盒子有它本身的名字,即“变量名”;里面装的物品,就是它的“值”。

一个等号 = 是赋值诗句,等号左边的为变量名,右边为其值,程序会执行等号右边的语句并将结果赋给变量,包括且不限于以下形式:

1
2
3
4
5
name = "谭小蝶" # 为 "谭小蝶"
age = 18 # 为 18
number = 5 + 3 # 为 8
string = "hello," + "world" # 为 "hello, world"
copy_name = name # 为 "谭小蝶"

我们用 print() 函数打印出来看看:

img

需要注意,变量名可以是大小写字母、数字和_的组合,但不能用数字开头。作为一种好的编程习惯,你应该尽可能取有意义、便于分辩的变量名。

img

糟糕的变量名使代码难以阅读

运用我们新学的变量,将之前的程序改进一下:

1
2
3
name = input("请输入你的名字:")
age = input("请输入你的年龄:")
print("你好,",age, "岁的", name, "!")

占位符

print("你好,",age, "岁的", name, "!") 的书写可能并不方便,我们可以用“格式化字符串”的方式:

1
2
3
name = input("请输入你的名字:")
age = input("请输入你的年龄:")
print("你好,%s 岁的%s!" % (age, name))

效果当然是一样的,而我们编写代码时应该选择更简洁优雅的方式,这也正契合 Python 的精神。

形如 %s ,这种一个 % 加一个字母的被称为占位符,%s 表示一个字符串,用 input() 获取的默认是字符串类型。

占位符 替换内容
%s 字符串
%d 整数
%f 浮点数
%x 十六进制整数

占位符还有更多,以上是比较常用的几种。

小结

通过本教课程,你已经学会了基本的输入输出语句,了解了字符串相关内容,并且开始使用变量。在入门编程的道路上,又迈出了坚实的一步, 继续加油! 👏