二.python基础语法
目录
1.第一个python实例
2.python编码规范
2.1.编写规则
2.2.命名规范
2.3. 空格
2.4. 缩进
2.5. 注释
3.python关键字和标识符
3.1.标识符
3.2.关键字
4.python变量
4.1. 定义变量
4.2. 变量类型是可变的
4.3. 多个变量指向同一个值
5.python基本数据类型
5.1. 整数
5.2. 浮点型
5.3. 复数(特殊的浮点型)
5.4 字符串
5.5.布尔类型
5.6. 强制类型转换
5.7.输入输出
1.第一个python实例
Python随着时代的进步,变得越来越受欢迎,当然也有它受人喜欢的道理。下面我们首先通过对比来了解一下。
不知道大家有没有学过C或C++,在C语言中输出一个简单的‘Hello World!’的代码如下:
#include<stdio.h>int main(void){Printf("Hello World!");return 0;
}
但是我们在使用Python中只需要一行代码就可以实现以上程序,代码如下:
print('Hello World!')
第一行为我们输入的内容,通过第一个Python实例大家也可以看到Python相对于其他语言要简洁很多。
在学习Python的过程中,我们会发现Python和其他语言差别很大,例如‘头文件’,在Python中,当我们需要用到相应模块功能的时候我们才需要引用相应模块。例如:
import random #random属于Python库中自带的一个模块,它用于生成随机数test = random.randint(1,10)#因为我们在这里调用random中的randint方法,所以我们在头部引入random模块print(test)#打印出test
Python在使用时没有必须要引入的模块。
在这里也简要讲解一下上面这个实例,‘import random’类似于C的头文件,他能够引入一系列的功能。例如:
1 |
|
我们首先是定义一个名为test的变量,‘=’后面是它的值,在这里就不过多解释randint的含义。大家只需要知道这行的意思就是给test这个变量定义一个值。
1 |
|
最后打印test来显示它的值。
如果上面的例子没有看懂的话,那么下面来一个更为形象的例子。
Python代码的简洁是它的一大特点,在初识Python的过程中再让Python用简洁的代码给大家带来一首李白的名诗:
zuozhe="李白" #我们在这里定义一个名为zuozhe的变量,然后让他的值等于"李白"print(zuozhe)#在这里打印zuozhe这个变量,会输出zuozhe的值,即打印出了李白print("日照香炉生紫烟,遥看瀑布挂前川。")print("飞流直下三千尺,疑是银河落九天。")
它的输出结果:
李白
日照香炉生紫烟,遥看瀑布挂前川。
飞流直下三千尺,疑是银河落九天。
2.python编码规范
本章节我们来讲述一下Python的编码规范,我们来先看一个例子。
大家认为以上两个代码,哪个让人看着更为舒适呢?我想大多人会选择右侧,以为它看上去更加整洁,这是一种最基础的代码规范,遵守代码规则和命名规范可以使得代码更加规范化,对代码的理解和维护十分重要。
本节会详细对代码编写规则以及命名规范等进行介绍。
2.1.编写规则
Python采用PEP 8的编码规范,接下来会讲解一些我们在学习Python过程应该严格遵守的条目。
1)每个import语句只导入一个模块,尽量避免一次导入多个模块。
例如:
import random
import os#尽量不要采取下面这种方式,分别导入import os,random
2)不要在代码末尾加‘;’,也不要用分号将2条命令写在同一行。
例如:
#不规范写法a=1;b=1;c=1;d=1;#规范写法a = 1b = 1c = 1d = 1或者a = b = c = d = 1
3)建议每行不超过80个字符。
如果超过,建议用小括号“()”将多行内容连接起来,而不推荐使用反斜杠‘\’进行连接。
例如:
4)使用必要的空行可以增加代码的可读性。
一般在顶级定义之间空两行,而方法定义之间空一行。
5)运算符两侧和函数参数之间建议使用空格进行分割。
6)应该避免在循环中使用+和+=操作符累加字符串。
这是因为字符串是不可变的,这样会创建不必要的临时对象,推荐做法是将每个字符串加入列表,然后循环结束后使用join()方法连接列表。
7)适当使用异常处理结构提高程序容错性,但不能过多依赖异常处理结构。
2.2.命名规范
命名规范在代码中起到很重要的作用,尽管不规范命名的程序我们依然可以运行,但是会影响我们更方便的理解代码。
下面来介绍一些命名规范:
- 命名尽量短小并且使用小写字母,可以使用下划线分割多个字母,例如get_name、tom_home、asset,这些都是推荐使用的类型。(本小节存在不遵守此规范的实例,有兴趣的可以找一下)
- 类名采用单词首字母大写的形式,例如:GetMoney,History等。
- 使用单下划线“_”开头的模块变量或者函数是受保护的,在使用import*from语句从模块中导入时这些变量或者函数不能被导入。
- 使用双下划线 “__”开头的变量或方法是类私有的。
2.3. 空格
代码中有些位置是需要空格的,下面是使用空格的规范:
● 赋值符号“=”前后各有一个空格。
● 所有的二元运算符都应该使用空格与操作数分开。
a += c + d
● 括号内不要有空格,Python中括号包括小括号“0”、中括号“[]”和大括号“{}"。
● 不要在逗号、分号、冒号前面有空格。
2.4. 缩进
4个空格被认为是一个缩进,Python中的缩进类似于C语言中的‘{}’,在‘:’换行后一定要跟一个缩进,不然会出现语法错误。
正确如下图:
如果不正确使用缩进,就会出现SyntaxError错误。
2.5. 注释
最后再讲一下注释规则,大家会在本教程中看到很多很多的注释,注释穿插于代码中,‘#’为开始,换行即截止。
我们在学习编程语言的过程中,总是离不开标识符和关键字的使用,这一章我们就来学习一下他们的用法。
3.python关键字和标识符
3.1.标识符
标识符就是我们在程序中需要用到的变量、常量、函数、属性、类、模块等需要我们来自己定义的名字。尽管我们可以自主定义标识符,但是构成标识符有一定的规范:
1)大小写的区分,Homework和homework属于两个不同的标识符。
2)关键字不能作为标识符。
3)标识符首位可以用下画线“_”但是不可以是数字。例如 _get、__doc__等是可以的,123get是不可以的。
4)除去首字母,其他位可以使用下画线“_”,数字和字母。例如get_money、name2、list123等。
5)不能使用内置函数作为标识符。
3.2.关键字
关键字是Python语言中被赋予特殊含义的单词,这些关键字不可以被用作标识符来使用。
Python是区分大小写的,例如关键字if是不可以用作标识符,但是IF是可以用作标识符的。Python关键字有33个,分别是:
False | None | True | and | assert | as | async | await | break | class |
continue | def | elif | else | except | finally' | for | from | global | if |
import | in | is | lambda | nonlocal | not | or | pass | raise | try |
while | with | yield |
其中只有前三个是首字母大写,其余都是小写,Python中关键字可以在IDLE中或者Pycharm等中查看。
>>> import keyword>>> keyword.kwlist['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
接下来介绍一些常用的关键字来讲一下。
1)False和True
他们都属于布尔类型的值。False为假,True为真。
2) class
用来定义类。
3) finally
处理异常的关键字。
4) None
它是一个特殊的变量,不为0也不为一个空字符串,它的数据类型为NoneType。
5) for
for循环用来遍历序列,通常用来遍历列表,我们在循环的时候大多使用for循环。
6) def
用来定义函数。
7) while
while语句重复执行一块语句,属于循环的一种常见类型。
8) global
定义全局变量。
9) if
循环语句之一,用来判断真假。
4.python变量
在编程语言中,变量是一个必不可少的词,大家也可以把变量理解成名字,也可以理解为一个标签。
举个例子来讲解一下变量,比如我们购买了一套名为“dotcpp”的房子,我们在“dotcpp”这个房子里存放了1000本书,我们可以这样来定义:
dotcpp = 1000
再举个例子,当你的信到了邮局,你到了邮局之后只需要提供你的名字或者身份证号或者手机号等信息,工作人员就会通过你的名字及附属信息去找到相应的信。
4.1. 定义变量
Python的变量和其他语言不太一样,在python中不需要提前声明变量及其类型,可以直接赋值即创建各种类型的变量。定义变量需要遵守规则:
1)选择有意义的单词作为变量。
2)不可以使用关键字作为变量。
3)变量需要是一个有效的标识符。
4)避免使用0和1
变量的赋值通过‘=’来实现。格式为:变量 = 值,例如:
Name = '李华' #创建值为‘李华’的name变量age = 18 #创建值为‘18’的age变量classname = '19级计算机1班' #创建值为‘19级计算机1班’的name变量
需要注意的是,如果在定义班级的时候使用class作为变量,则会报错,因为class是关键字不可以作为变量。
4.2. 变量类型是可变的
Python是一门动态语言,因此变量的类型是可以随时发生变化的,可能我们开始定义的时候,变量名是int类型,但是我们通过强制类型转换最后成了浮点型等其他类型。
通过下面例子来看一下(解释都在注释里):
age = 18print(age)#打印age看一下值print(type(age))#这里通过type()函数来输出age的类型age = float(age)#强制类型转换把age转换为浮点型print(age)#再输出一下age的值,看看什么变化print(type(age))#最后看一次age的类型
输出结果为:
18<class 'int'>18.0<class 'float'>
4.3. 多个变量指向同一个值
在Python中,多个变量可以指向同一个值,我们将3个变量都赋值为1024,再分别使用内置函数id()来访问变量的内存地址,可以得到同一个结果,看下面代码:
here = there = that = 1024print('变量here在内存中的地址:',id(here))print('变量there在内存中的地址:',id(there))print('变量that在内存中的地址:',id(that))
输出结果为:
变量here在内存中的地址: 51695856变量there在内存中的地址: 51695856变量that在内存中的地址: 51695856
通过输出结果我们可以看出这些变量对应的地址是同一个地址,在不同电脑上对应的地址可能是不相等的,但三个元素对应的内存地址是一致的。
在这里需要注意的是赋值的时候需要同时赋值,这样能确保三个变量使用的是同一个值的地址,如果分别对三个变量赋同一个值,这样有可能会导致三个变量在内存中被分配了三个不同的地址。
5.python基本数据类型
数字也有数字的分类,本节我们会依次来学习整数、浮点数和复数。
5.1. 整数
整数是表述整数的数值,没有小数部分。在Python中,整数包括正整数、负整数和0,在Python中数值超过计算机自身的计算功能时会自动转用高精度计算。整数类型包括二进制、八进制、十进制和十六进制。
1)二进制
二进制整数比较简单,由计算机世界最重要的‘0’和‘1’组成,它的进位规则‘逢二进一’,即101+001=110,二进制使用0b或者0B开头,比如0b1101,对应的十进制的13
二进制转十进制的方式为每一位乘以基数的角标次方的和,我们举例来说明一下。
拿数字101011来说:
2)八进制
八进制数包含0-7,规则为‘逢八进一’,以0o开头。在Python3.x中八进制数必须以0o开头,例如0o234,0o169等。
3)十进制
十进制的应用比较广泛,大家在日常生活中大多使用的都是十进制数,例如:123,456,123456789等。
4)十六进制
十六进制进制数包含0-9和A-F,规则为‘逢十六进一’,以0x或者0X开头,例如0x36,0x169等。
5.2. 浮点型
浮点数大家在生活中也比较常见,例如1.5,26.37这种由整数和小数两部分组成。浮点数还可以通过科学计数法表示。例如 3.6e5,9.26e-2等,浮点数的数据类型为float。(没有double)
5.3. 复数(特殊的浮点型)
Python中的复数等同于我们在数学中学习到的复数,由实部和虚部构成。且由j或J构成虚部。
我们来表示一个复数,66.6+8.88j,那么66.6表示的是实部,8.88则是虚部。
本章的内容主要讲解了整数的类型,下面通过一个实例来介绍一下整数、浮点数。
代码如下(大家可以自己运行一遍):
a=123456b=12.3456c=2.2+5.6jprint('a的值为:',a)print('a的类型:',type(a))print('b的值为:',b)print('b的类型:',type(b))print('c的值为:',c)print('c的类型:',type(b))#可以看出复数的类型,它的实部和虚部都是浮点数
输出结果如下:
a的值为: 123456a的类型: <class 'int'>b的值为: 12.3456b的类型: <class 'float'>c的值为: (2.2+5.6j)c的类型: <class 'float'>
5.4 字符串
字符串,顾名思义就是字符堆积成的串序列,例如‘dotcpp’、‘hello world!’、‘Python~’等都属于字符串,我们在使用字符串的时候通常用使用单引号'dotcpp'和双引号''dotcpp''以及三引号''' dotcpp'''三种形式。
但需要注意的是单引号和双引号是在一行中输入,而三引号是可以跨行的。
1.普通字符串
我们通过实例来介绍一下这三种形式。代码如下:
Python='人生苦短,我用Python'#第一种形式,单引号形式str="字符串"#第二种形式,双引号形式。这里需要注意,在python中 除了关键字外,
#str,list等类型也是可以用作变量名。libai='''床前明月光,疑是地上霜。举头望明月,低头思故乡。'''#第三种形式,三引号形式。print(Python)#打印print(str)#打印print(libai)#打印
运行结果:
通过三引号我们可以来画一幅图。
2.Unicode 字符串
Unicode是一个编码方案,Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode 编码共有三种具体实现,分别为utf-8,utf-16,utf-32,其中utf-8占用一到四个字节,utf-16占用二或四个字节,utf-32占用四个字节。Unicode 码在全球范围的信息交换领域均有广泛的应用。
在Python中定义Unicode字符串也是尤为简单,只需要在我们要定义的字符串的引号前加上小写字母u。
例如:
test = u'\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528\u0050\u0079\u0074\u0068\u006f\u006e'print(test)
Unicode会在我们使用一些不方便表示的类型的时候可以采用Unicode编码来转换,例如‘@’可以用0x0040,空格也可以用\u0020表示等。
3.常用的转义字符
最后我们来了解一下Python常用的转义字符。
转义字符 | 用法 |
\n | 换行符 |
\ | 续行 |
\\ | 反斜杠符号 |
\r | 回车 |
\f | 换页 |
\’ | 单引号 |
\e | 转义 |
\000 | 空 |
\a | 响铃 |
\xqq | 十六进制数qq为数 |
\oaa | 八进制数,aa代表字符 |
5.5.布尔类型
布尔类型是一个真假类型,经常在判断语句中会使用到。布尔类型中包含True和False来代表真假。
Python的中的布尔值可以转化为数值,True为1,False为0.
我们在判断布尔类型对象的时候(bool(x)),如果值为0或者空序列或者None的时候判断为False,其他除了自定义对象的实例外,都是True对象。
看下面代码:
a = 1b = 0c = []print(bool(a))print(bool(b))print(bool(c))if bool(a):#如果a为True则执行下语句print('ok')else:#如果a为False则执行下语句print('no')
输出结果:
1 2 3 4 |
|
5.6. 强制类型转换
Python是一门动态语言,在我们需要转换变量类型的时候十分方便。例如我们在输入一个浮点数,我们在输出的时候需要输出一个整数。
看下面例子:
test = float(input('输入一个浮点数:'))#在这里如的是一个整数print('test变量现在的数据类型:',type(test))test = int(test)#强制转换为整数,向下取整,舍去小数点后的数据print('强制类型转换后的test:',test)print('test变量现在的数据类型:',type(test))
输出结果为:
1 2 3 4 |
|
我们在使用过程中可以通过float()、int()、str()、list()等直接对数据进行类型转换。
接下来列举一下常用的类型转换函数。
函数 | 功能 |
---|---|
int(x) | 把x转换为整数 |
float(x) | 把x转换为浮点数 |
str(x) | 把x转换为字符串类型 |
list(x) | 把x转换为列表类型 |
chr(x) | 把x转换为一个字符 |
ord(x) | 把字符x转换为相应整数值 |
hex(x) | 把整数x转换为十六进制字符串 |
oct(x) | 把整数x转换为八进制字符串 |
1) 接下来看一个实例。
a=666 #整数b='dotcpp' #字符串c=['d','o','t'] #列表d=8.8 #浮点数print('先看一下a,b,c,d:\n',a,b,c,d)print('字符串b的列表格式:')print(list(b)) #转换为字符串print('列表c的字符串格式:')print(''.join(c)) #需要注意的是列表转换为字符串比较特殊print('整数a的浮点格式:')print(float(a)) #转换为浮点数print('浮点数d的整数形式:')print(int(d)) #转换为整数
输出结果:
1 2 3 4 5 6 7 8 9 10 |
|
2) 在编程的过程中难免要涉及到进制转换的问题,下面我们通过一个实例来了解一下Python的进制转换。
dec = int(input("输入数字:"))print("十进制数为:", dec)print("转换为二进制为:", bin(dec))print("转换为八进制为:", oct(dec))print("转换为十六进制为:", hex(dec))
输出结果:
1 2 3 4 5 |
|
对于编程语言,输入和输出近乎于人的手和腿,Python的输入和输出既独特又容易理解。我们需要了解输入输出的多种用法,熟练地掌握输入和输出对于日后的学习至关重要。
5.7.输入输出
1. 输入(input())
Python使用input()函数来存入用户输入的信息。
input()的使用规则比较简单,因为我们在前面讲到过,Python在使用变量的时候不需要提前定义,所以我们在需要输入信息的时候只要给定一个变量名即可直接输入。
例如:
即变量名=input(‘指引信息’)。
下面多给几个例子来看一下这个input()函数。
a = input('输入dotcpp的网站:')b = input('输入你的名字:')c = input('输入你的生日:')d = input('输入你最喜欢的城市名:')e = input('输入你最喜欢的数字:')print("dotcpp的网址:",a)print('你的姓名:',b)print('你的生日:',c)print('你喜欢的城市和数字分别为:',d,e)
输出结果:
1 2 3 4 5 6 7 8 9 |
|
需要注意的是,如果是简单的直接使用input()函数,我们输入的内容均会以字符串的格式保存下来。接下来的写法可以在输入之后直接指定输入内容的类型。
例如:
a = int(input('我最喜欢的数字:'))b = float(input('我认为适宜的温度:'))print(a,type(a))#先输出内容,然后type()函数看类型。print(b,type(b))
输出结果为:
1 2 3 4 |
|
在大家之后的学习中会遇到一个很常见的问题,在Python中该如何一行输入多个字符。
通常会采用Python中的内置map()函数来进行输入。
例如:
a,b,c = map(int,input().split())#这种方式输入了3个int型的数字,split()代表以空格隔开。print(a,b,c)index = list(map(int,input().split()))#这种方式可以输入任意个int型的数字,在这里采用列表来存储。print(index)
输出:
1 2 3 4 |
|
2. 输出(print())
看来这么多实例,想必也大致了解到了输出就是用print()函数来实现。
例子中为了方便理解,大多都是简单的直接输出变量,然而输出还可以有很多方式。
例如:
我们可以在函数中直接输出1+2的值,还可以输出1*2等运算。还可以用print来直接输出条件表达式,还可以直接输出输入内容。
1 2 3 4 5 6 7 |
|