你将学习 Python 的数据类型、变量、运算符、条件判断与循环等基础语法,最终亲手完成一个 Python 小游戏,相信你一定能做到!
目标
- 请在
/home/shiyanlou
目录下创建shiyanlou.py
文件 - 在文件中输入以下内容:
print('hello shiyanlou')
- 进入
Code
目录,新建名为test
的目录,然后将shiyanlou.py
复制到目录/home/shiyanlou/Code/test
中 - 了解python中的print()
- 数据类型
- 变量
- input()
- 运算符
提示语
touch
创建文件- 可使用
Sublime、gedit、Vim
等编辑器 mkdir
创建目录cd ~
返回home
目录cp
复制- 使用
Sublime
写入代码后,注意保存的位置。
知识点
- Linux 目录结构
- Linux 文件操作
- cp 命令
- mkdir 命令
python 程序的执行方式一般分为两种:
- 交互式命令行执行:在这个环境下,你输入的 Python 代码都可以立即执行,并得到输出结果,在开发中经常用于调试代码。
- 程序文件的方式执行:最常用的方式,你日常接触 99% 的程序,都是以打包成一套代码文件的方式执行的。
没看懂?不用在意,我们往下做就行了。
这节实验中,我们先在 Python3 的命令行交互式环境中学习基本语法。
进入 Python 开发环境:
在实验环境中打开终端
,在第一行 $
符号后面输入 python3
,按回车键执行。系统就进入到 Python 的交互环境中了。
>>>
是提示符,提示你在这里输入 Python 代码。
如果要退出命令行,可以使用快捷键 Ctrl + D
,或者输入 exit()
。
输入 1 + 1
试试,按下回车,可以看到 Python 自动帮你算出了结果。
我们再来写点代码,输入:
print('Hello World!')
( ⚠注意:️编程中标点符号要使用英文符号,请永远记住这一点 !)
再按回车执行,终端中出现了 Hello world
~
很简单对不对?
print —— 打印
print(‘Hello World!’) —— 打印 Hello World!
print() 就是你学到的第一个函数 —— 「打印函数」(函数可理解为方法),它可以帮你输出任何内容 —— 只要放进 括号 内。
那么'Hello World'
为什么要用 引号 包起来呢?
用引号包起来的文字,被称为「字符串」,等于在告诉计算机:请把引号里的内容打印出来,不用管里面是什么。
观察下面的两行代码:
print(1 + 1)
print('1 + 1')
用前面学到的知识,猜一下这两行代码分别会打印什么。
然后在终端中验证一下:
可以看到,前者打印出了 1+1 的结果;而加了引号后,原封不动地打印出了「 1 + 1 」。
⚠ ️注意:引号可以是单引号,也可以是双引号,但必须是英文符号,且前后一致。
试试打印一行诗句:
小练习: 请打印出 床前明月光,疑是地上霜
print('床前明月光,疑是地上霜')
提示:双击桌面上的搜狗拼音「sogou」,即可在桌面右下角切换成中文输出;如果没有搜狗拼音,请直接点击右下角切换成拼音输入;按「shift」键在中英文间快速切换。
如果想打印多行文字怎么办呢?
可以使用三个引号,比如:
print('''
我去买几个橘子
你就站在此地不要走动
''')
终端会直接打印多行内容:
我去买几个橘子
你就站在此地不要走动
计算机不仅能处理数字之间的运算,也能对文本、图片、音频、视频等数据进行处理。在程序中,每个数据都有自己的数据类型。Python 的数据类型有 int(整数)、float(浮点数)、字符串、布尔值、None、列表、元组、字典、集合等。
下面介绍几种基本数据类型。
int – 整数
即数学意义上的整数,可以是正整数或负整数,不带小数点。
float – 浮点数
浮点数就是小数。所谓浮点,指的是小数的表示形式多变,3.14 可以表示为 0.314 x 10,小数点可以改变位置,故称为浮点数。
在计算机中,整数、浮点数字、字符串等所有的数据,都会被转换为二进制数值进行处理,处理完成后再转换为你想要的信息。转换的过程中可能就会出现精度的丢失,试试在 Python 命令行中输出 1.1 + 2.2
,猜猜结果是多少?
结果并不是 3.3
,而是 3.3000000000000003
。
布尔值
布尔值只有 True
和 False
两种,注意大小写。布尔值通常用来比较和判断,举例如下:
空值 None
None
在 Python 中是一个特殊的值,表示“无”。注意它与数值 0 不同,0 是一个整数,而 无
表示 什么都没有。
我们再来学习一个很重要的概念 —— 「变量」。你可以将它理解为一个盒子 —— 把常用的数据放在里面,起一个好记的名字,下次用到时可以快速找到它。
比如说在游戏中,你会频繁用到 「血量(HP)、攻击力、防御力」等数据,这些数据需要用名字储存起来。
定义这些变量的代码如下:
Level = 1
ATK = 5
HP = 100
左边是「变量名」
右边是「数据」
而等号在Python里的意思是「赋值符」,代表把右边的数据赋值给左边。
其实,早在小学的数学课上,你就开始使用 变量 的概念了。比如「鸡兔同笼」问题中,你可以“设鸡的数量为 x,兔子的数量为 y ”, x、y 就是变量,:
x = 鸡的数量
y = 兔子的数量
则:
x + y = 头数
2x + 4y = 脚数
变量中的数据,除了可以是整数,还可以是一段文字,比如:
word = 'Hello World!'
print(word)
试一下上面的代码,看看会打印出什么结果。
变量的右边,甚至可以是另一个变量,如:
word2 = word
print(word2)
上面这段代码的意思是把「word」中的数据,赋值给「word2」这一变量。
亲手操作一下试试:
“对了,还不知道你多大了,请用 Python 告诉我吧~”
输入下面的代码:
age = input('My age is :')
执行代码后,弹出「My age is :」,在后面输入你的年龄,再按回车。
这时,你的年龄就被存入了「age」这个变量中,print 一下试试:
print(age)
终端随之打印出了你的年龄。
这就是我们今天学的第二个函数 —— input()
,主要作用是让用户输入某个内容并接收它 —— 比如注册时需要填写账号密码,你就可以用 input()
搞定:
ID = input('请输入你的ID:')
用户填写的信息就会被存入「ID」这个变量中。
( ⚠注意️:如果input()函数执行后,你没有在后面输入内容,程序会一直卡住,等待你输入信息。)
任何一本编程书籍之中,字符串的内容总是很长。这是因为:处理字符串是计算机程序中最普遍的需求之一 ,人和计算机交互,所用的就是字符串而不是二进制数字。
用 引号 包裹起来的数据就是字符串。计算机无法识别人类的文字,所以引号的作用就是告诉计算机:我是字符串,不用管里面是什么内容。
包裹字符串的引号必须前后对应,成对出现。如果字符串中还有引号,要特别注意,如 He said "Today's weather is good."
,直接写 print('He said "Today's weather is good."')
就会报错。因为:
正确的写法是,在 Today 后面加入 转义符 :
亲手在终端中试一下:
转义符 还有一个常用形式是和 n 连起来用,
n
代表换行符,就是用 Enter (回车)键敲出来的东西)。
? 索引
字符串是一堆字符的集合,可以通过位置编号,来获得对应的字符。如 'hello_shiyanlou'
,编号 0 对应第一个字符 h,1 对应第二个字符 e,依次类推。这个位置的编号,我们称之为:索引。
这里你又学到了计算机世界的一大概念:
在计算机世界中,计数从 0 开始。
在计算机世界中,计数从 0 开始。
在计算机世界中,计数从 0 开始。
索引除了是正数,也可以是 负值,表示倒数第几个。比如最后一个字符的索引为 -1,倒数第二个字符的索引为 -2。
简单的示例:
>>> string = 'hello_shiyanlou'
>>> string[0] # 获取第一个字符
'h'
>>> string[1] # 获取第二个字符
'e'
>>> string[2]
'l'
>>> string[-1] # 获取倒数第一个字符
'u'
>>> string[-2] # 获取倒数第二个字符
'o'
format()
format()
是专门用来 格式化字符串 的函数,它最常用的功能就是「插入数据」和「数字格式化」。
1. 插入数据
先看下面的代码,相信现在的你已经能看懂是什么意思了。我们让用户输入姓名和年龄,并用 name 和 age 变量接收数据。
name = input('请输入姓名:')
age = input('请输入年龄')
现在我想打印 “你叫xxx,今年x岁了” ,代码该怎么写?
有几种写法:
print('你叫'+name+',今年' + age + '岁了')
print("我的名字叫:",name,",我今年",age,"岁了。") # 使用逗号连接变量,输出时会出现空格
print("我的名字是"+name+",我今年"+str(age)+'岁了。')
print("我的名字叫{},今年{}岁。".format(name,age))
print("我的名字叫{a},今年{b}岁。".format(b=name,a=age))
print("我的名字叫%s,今年%d岁。"%(name,age))
print("我的名字叫%s,今年%s岁。"%(name,age)) #age强制转换成str类型了
这种方法用 + 号串联打印的内容,虽然可行,但是比较麻烦,而且有局限性。
这时,你可以使用 format()
函数,实现插入效果,用法如下:
print('你叫{},今年{}岁了'.format(name,age))
{}
为占位符,我先把这个位置占住,具体数据在后面导入。
下图可以让你有更好的理解:
2. 数字格式化
format()
的第二种常用功能,是格式化数字,比如我们要输出圆周率,但只保留两位小数,可以这么写:
print("{:.2f}".format(3.1415926))
如果要保留三位,则改成 {:.3f}
;不带小数,则改成 {:.0f}
,依次类推。
format()
功能还有很多,我们之后用到时在做学习。
注释,可理解为程序的注解、提示,用来帮助他人和自己阅读、理解、编写代码。python中,#
常被用作写单行注释,#
号后的内容会被忽略,不会被当作代码处理。
如:
# 注释可以写在开头:下面要打印“hello shiyanlou”
print("hello shiyanlou")
print("hello world") # 注释也可以写在后面:这里打印“hello world”
注释 对程序员来说非常重要,甚至直接决定了你的寿命……写注释可以帮你理清思路,提高程序的可维护性;如果没有注释,你会连自己的代码都看不懂,而且极可能会被同事、上司打死……
另外,如果有一些代码暂时不需要被执行,可以先不要删掉它(因为后面可能还会使用),而是使用 #
将其注释掉。这样代码就暂时不会被执行了,之后再需要这段代码时,删掉 #
就好了。
运算,是计算机最基本的功能,我们先来学习一下运算符。
运算符用于执行程序的运算,我们这里先学习最简单的几种:「算术运算符」、「比较运算符」、「赋值运算符」、「逻辑运算符」。
不要被这些名词吓到,其实大多都是些你小学就学过的概念……
? 算术运算符
即小学数学中的运算符,最常用的还是「加减乘除余」这五种:
运算符 | 名称 | 描述 |
---|---|---|
+ | 加 | 两个对象相加 |
– | 减 | 得到负数或是一个数减去另一个数 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 |
/ | 除 | x 除以 y |
% | 取模 | 返回除法的余数 |
** | 幂 | 返回 x 的 y 次幂 |
// | 取整除 | 返回商的整数部分(向下取整) |
? 练习一下:
>>> a = 12
>>> b = 3
>>> c = 5
>>> a + b
15
>>> a - b
9
>>> a * b
36
>>> a / b
4.0
>>> a / c
2.4
>>> a % c
2
运算符 | 描述 |
---|---|
== | 等于:比较对象是否相等 |
!= | 不等于:比较两个对象是否不相等 |
> | 大于:返回 x 是否大于 y |
< | 小于:返回 x 是否小于 y |
>= | 大于等于:返回 x 是否大于等于 y |
<= | 小于等于:返回 x 是否小于等于 y |
⚠️ 注意: 在 Python 和大多数高级语言中:一个等号代表赋值符,两个等号才代表数学意义上的“相等”。
? 练习一下:
>>> a = 1
>>> b = 2
>>> c = 3
>>> d = 2
>>> a == b
False
>>> a != b
True
>>> a > b
False
>>> a < b
True
>>> c >= d
True
>>> b <= c
True
赋值运算符 主要是为了简写,如果看不懂可以先跳过,在以后的项目中会更容易理解。
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | c = a + b :将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a :等效于 c = c + a |
-= | 减法赋值运算符 | c -= a :等效于 c = c – a |
*= | 乘法赋值运算符 | c *= a :等效于 c = c * a |
/= | 除法赋值运算符 | c /= a :等效于 c = c / a |
%= | 取模赋值运算符 | c %= a :等效于 c = c % a |
**= | 幂赋值运算符 | c **= a :等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a :等效于 c = c // a |
? 练习一下:
>>> a = 3
>>> b = 12
>>> c = 10
>>> c += a
>>> print(c)
13
>>> b -= a
>>> b
9
>>> c *= 5
>>> c
65
如果计算机只有计算功能,那它顶多是一个计算器;而我们今天使用的计算机之所以智能、可编程,最重要的原因是:它能够进行 逻辑处理。
逻辑运算符,即高中数学中的「 且、或、非 」,Python 中用 and
、or
、not
表示这三种逻辑。
运算符 | 逻辑表达式 | 结果 |
---|---|---|
and(逻辑与) | a and b | 当 a、b 都为 True 时,返回 True;否则返回 False |
or(逻辑或) | a or b | 当 a、b 任意一个为 True,就返回 True |
not(逻辑非) | not a | 当 a 为 True 时,返回 False;反之亦然 |
? 练习一下:
⚠️ 补充:在逻辑运算中,数字 0
代表 False,1
代表 True。
>>> not 1
False
>>> not 0
True
>>> 1 and 1
1
>>> 1 and 0
0
>>> 1 or 0
1
到这里,我们本节实验就学完了,总结一下今天所学的知识点:
- Python 开发环境
- print() 函数
- 变量与数据类型
- input() 函数
- 字符串
- 运算符
课下,请把这些知识点记录在你的 脑图 或 笔记 中,例如这样:
Python 基础语法的三大模块中,你已经学习了「数据」、「函数」两个,下节课中,下你将学习第三个模块——「流程控制」。
完成这三个模块的学习后,你会发现你已经能写出很多程序了~甚至在第一节实验中你体验过的对战游戏,也可以独立实现出来!胜利就在前方,我们下节课见!