人工智能入门与实战第一季:python基础语法
为了更加方便我们编程,从本章开始我们将使用PyCharm开发环境,上面我们也提到了IDLE开发环境,借此机会你也可以对比一下PyCharm与IDLE谁更好用?
以下安装以mac为例:(windows类似)
下载地址:https://www.jetbrains.com/pycharm/download/#section=mac
左侧专业版收费,右侧是社区开源版本,可以满足基本开发,当然你也可以从网上找专业免费版,没错,就是通常说的破解版。
安装很简单,下载之后直接安装,无需多余配置。
使用PyCharm写你的第一个程序,你可以创建新项目,当然也可以直接使用PyCharm打开并运行我们前面写的代码,比如love_china.py,首先打开PyCharm:
我们看到PyCharm这个面板左侧是历史打开的项目或文件,右侧是操作区,我们点击Open,找到你之前存放的love_china.py文件,双击打开。
这时会出现如下提示“找不到Python解释器”,所以此时还无法运行程序:
我们点击(上图)提示内容后面的“Configure Python interpreter”即配置Python解释器(也可以从工具栏PyCharm-Preferences打开),会打开参数设置界面(下图),选择我们已经安装的Python解释器,点击ok即可。
好了,现在可以运行love_china.py这个程序了,工具栏选择“Run-Run”即可运行,也可以在当前文件编辑界面“右键-Run”也可以运行。
如果要自己创建python文件,可以工具栏选择File-New-Python File
好了,PyCharm的安装和基本使用先写到这里,后续在学习的过程中会和你一起慢慢熟悉更多的功能。
什么是注释?
注释是指在程序中添加的备注或者说明,解释器不会把它当做代码来运行,只是起到说明的作用,我们以后使用别人提供的代码时都会看到大量的注释,以便你能更好的理解他们的代码逻辑。代码中适当的添加注释是个好习惯。
1.单行注释:#
单行注释快捷键:mac系统使用command+/、windows系统使用Ctrl+/
单行注释实现批量注释:批量选中要注释的代码,mac系统使用使用command+/、windows系统使用Ctrl+/
2.多行注释:’’'或"""
代码示例:
#这里是单行注释
#再来一个单行注释
#print("我已经被注释掉了,不会执行了")
'''
我是多行注释
我是多行注释
'''
"""
我也是多行注释
print("我已经被注释掉了,不会执行了")
"""
#以下将执行一个输入操作
name = input("请输入你的名字:")
print(name) #打印输入的名字
不少编程语言都是使用大括号 {}来表示代码块的,而python则是使用缩进,一般采用4个空格,可以使用tab制表符,同一个代码块的语句必须包含相同的缩进空格数。
代码示例:
x = 5
y = 6
if x == y:
print('x和y相等')
else:
print("x和y不相等")
更多的代码书写风格官方文档里有详细说明:
https://www.python.org/dev/peps/pep-0008/
注释与缩进对应的源码:se1_ch2_note.py
在计算机的世界里,一切皆数据,那么在计算机的内存中如何存取数据呢,答案是变量,变量就如同你家的门牌号,通过门牌号可以找到你的家,同样通过变量可以找到内存中的某个数据,当然前提是这个变量存储了该数据的内存地址。
python中变量无需声明类型,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
赋值表达式:变量名 = 表达式
表示把右边表达式的值赋值给左边的变量,准确的说是左边的变量存储了右边数据的内存地址,表达式可以是简单的数值、字符串,也可以是复杂的运算表达式。
代码示例:
a = 1
b = c = 2 #等同于b=2; c=2
d,e = 3,4 #等同于d=3; e=4
print(a,b,c,d,e)
name = 'judy'
print(name)
#使用type()函数,查看变量的类型
print(type(a))
print(type(name))
输出结果:
1 2 2 3 4
judy
什么是标识符:python中标识符包括变量名、函数名、类名、模块名、包名
标识符命名规则:
1、第一个字符必须是字母或下划线"_"
2、其他字符由字母、数字、下划线组成
3、标识符区分大小写
4、不可以使用保留字符,例如if、while、False、and、not、return、…
查看更多保留字:
import keyword
print(keyword.kwlist)
在python中,在遵守标识符命名规则前提下,开发人员通常这样来命名:
1.模块名、包名:字母一般小写,多个单词之间使用下划线连接,例如前面的例子:hello_world.py,比如python的数学库:math.py
2.函数名:字母一般小写,多个单词之间使用下划线连接,例如系统输入输出函数:print()、input()
3.变量名:字母一般小写,多个单词之间使用下划线连接,例如:name、str_length
当然除了以上的命名规则之外,以上命名我们需要尽量做到见名知意,好的命名和好的代码结构是作为一名开发人员的基础素养,会给阅读你的代码人留下非常好的印象。
变量和标识符对应的源码:se1_ch2_variables.py
python中有三种数字类型:整数、浮点数和复数。
1、整型(int): 整数,不带小数点,例如1,100,Python3 整型没有限制大小,也可以当做长整型使用,所以Python3中没有long类型
2、浮点型(float):小数,例如9.99,浮点型也可以使用科学计数法表示,例如999e-2
3、复数(complex):复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。(了解)
运算符 | 描述 | 举例 | 结果 |
---|---|---|---|
+ | 加 | 5+6 | 11 |
- | 减 | 2-1 | 1 |
* | 乘 | 3*6 | 18 |
/ | 浮点除法 | 5/2 | 2.5 |
// | 整数除法 | 5//2 | 2 |
% | 取余/模 | 5%2 | 1 |
** | 幂 | 2**3 | 8 |
注意一下正、负数的取整的区别,代码示例:
print(-9 // 2)
print(9 // 2)
输入结果:
-5
4
函数 | 描述 | 举例 | 结果 |
---|---|---|---|
abs(x) | x 的绝对值 | abs(-4) | 4 |
int(x) | 将 x 转换为整数 | int(3.6) | 3 |
float(x) | 将 x 转换为浮点数 | float(“123”) | 123.0 |
divmod(x,y) | 返回一对商和余数 | divmod(5,3) | (1, 2) |
pow(x, y) | x 的 y 次幂 | pow(2,3) | 8 |
round(x[, n]) | 四舍五入,n表示保留小数位数 | round(5.9) | 6 |
math.floor(x) | 返回数字的下舍整数 | math.floor(5.9) | 5 |
math.ceil(x) | 返回数字的上入整数 | math.ceil(5.1) | 6 |
以上是一些常用的数学函数,列出来为了让你可以有个直观的感受和了解,我们使用时到官网查找即可,官网标准库地址如下:
https://docs.python.org/zh-cn/3/library/index.html#library-index
文档中包含了数学函数、随机函数、幂函数、对数函数、三角函数等各种函数的说明。
代码示例:
print(abs(-4))
print(int(3.6))
print(float("123"))
print(divmod(5,3))
print(pow(2,3))
print(round(5.9))
#记得先导入math模块:import math,上面的方法为啥不用导入对应的模块?原因很简单:以上方法属于python解释器的内置函数(Built-in Functions)
print(math.floor(5.9))
print(math.ceil(5.1))
输出结果:
4
3
123.0
(1, 2)
8
6
5
6
复合赋值运算符是对正常运算符赋值的一种简化,下面以加、减、乘、除举例,其他类似:
运算符 | 举例 | 等价于 |
---|---|---|
+= | s += 3 | s = s + 3 |
-= | s -= 3 | s = s - 3 |
*= | s *= 3 | s = s * 3 |
/= | s /= 3 | s = s / 3 |
代码示例:
#例如s=1,s加1之后的值再存储到s中
s = 1
s += 1 #等价于 s = s + 1
print(s)
输出结果:
2
布尔类型只有两个值: True 和 False,多用在条件语句中,表示条件的真与假
所有比较运算符返回非0表示真,返回0表示假,这分别与布尔值True和False等价
以下假设a = 5, b = 8
运算符 | 描述 | 举例 | 结果 |
---|---|---|---|
== | 等于 - 比较对象是否相等 | a == b | False |
!= | 不等于 - 比较两个对象是否不相等 | a != b | True |
> | 大于 - 返回x是否大于y | a > b | False |
< | 小于 - 返回x是否小于y | a < b | True |
>= | 大于等于 - 返回x是否大于等于y | a >= b | False |
<= | 小于等于 - 返回x是否小于等于y | a <= b | True |
代码示例1:
#你中500w了吗?
is_500w = True
print(type(is_500w), is_500w)
if is_500w :
print("好开心")
else:
print("再接再厉")
输出结果:
好开心
代码示例2:
x = 5
y = 6
print(x==y)
if x == y:
print('x和y相等')
else:
print("x和y不相等")
if x < y:
print("x小于y")
else:
print("x大于等于y")
输出结果:
False
x和y不相等
x小于y
所有比较运算符返回非0表示真,返回0表示假,这分别与布尔值True和False等价,怎么理解?举例如下,观察打印结果:
代码示例:
if 5:
print('5非0,表示True')
if True:
print('True')
if 0:
pass #反正这个分支也不会执行,就用pass略过
else:
print("0为假,表示False")
if False:
pass
else:
print("False")
输出结果:
5非0,表示True
True
0为假,表示False
False
以下假设变量 a 为 5, b为 6:
运算符 | 逻辑表达式 | 描述 | 举例 |
---|---|---|---|
and | x and y | 布尔"与" : 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 6 |
or | x or y | 布尔"或" : 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 5 |
not | not x | 布尔"非" : 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not 5 返回False |
以下示例描述了逻辑运算的基本逻辑,试着修改case1和case2的值,看一下输出结果有什么不一样吧?
示例代码:
case1 = 0 #把我改成非0的值试试
case2 = 3 #把我改成0试试
if (case1 and case2):
print('case1 和 case2 都为True')
else:
print('case1 和 case2 至少有一个不为True')
if (case1 or case2):
print('case1 和 case2 至少有一个为True')
else:
print('case1 和 case2 都不为True')
if (not case1):
print('case1为False')
else:
print('case1为True')
逻辑运算符有啥用?用处太大了,现实世界使用逻辑运算符的场景太多了,比如要想进入BAT,条件必须是211或985,且研究生学历,那么这个条件语句可以这样写:
(case1 == "211" or case1 == "985") and case2 == "研究生"
数字类型、各种运算符对应的源码:se1_ch2_numeric.py
1、解一道数学题,给定半径r=5,计算圆的周长
2、某小学考试评优三个等级,80分(含)以上:优秀、60-79分:一般、60以下:不及格,小明数学考试得了59分,通过比较运算打印出小明的评优结果
本章作业对应的源码:se1_ch2_home_work.py
从本章开始已经进入python语言的正式学习中了,当然还是最基础的阶段,本章主要讲了变量、数字类型和布尔类型的几种数据类型,还有各种常见的运算符。
当然python中的数据类型还远远不止数字类型和布尔类型,还有字符串、各种序列、字典,我们下一章再陆续推出。
今天说一个比较容易犯的错误,就连我自己在今天的代码编写中也出现过,就是中英文输入法,是的,我在前面提到过,比如代码中的括号、引号、分号,都必须是英文输入法,否则会报错。
但是对于初学者而言如果出现上述错误可能会浪费掉你的很多时间去排查,所以,我们要避免这个问题。
还有需要提醒的是记得学会使用官方文档,因为这才是一手资料,而且python官方文档支持中文,这在其他编程语言中是很少见的,说明当今中国开发者已经成为一群不可忽视的力量了,当然如果你的英文很好可以直接切到英文模式。
今天讲的内容在官方网站都可以找到对应的文档:
https://docs.python.org/zh-cn/3/reference/index.html(Python语言参考)
https://docs.python.org/zh-cn/3/library/index.html(Python 标准库)
我是猪弟爸爸:zhudipapa,有问题给我留言,我们下节见!