Python基本语法
在介绍Python的语法之前,我们需要了解下计算机中的两种模式:
1. 交互模式
在macos与ubuntu等系统中,我们通过使用terminal输入python进入python的交互模式。在windows下面,我们是通过 cmd进入到交互模式,长得很像下面这个这样。
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
在进入到Python环境之后,我们输入exit()并按回车,推出Python的交互环境,返回到命令行。
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>> exit() C:\Users\DELL>
2.命令行模式
命令行模式,就是指在终端中,直接对python文件进行处理的模式,如现在有一个test.py的文件,内容如下:
print("Hello World!!!!")
那我们可以在命令行模式下,直接运行这个文件,如下:
C:\Users\DELL\Desktop>python test.py Hello World!!!
在命令行模式之下,初学者经常出现一个错误,在运行python test.py之后,终端报错显示没有这个文件。所以,我们需要在运行之前, 将当前工作的目录切换到这个文件所在的目录下,或者使用ls与dir等命令提前判断有没有这个文件。
[//] < 你是个什么玩意儿?
3. Python的输入输出
3.1输出
python中主要的输出使用的print()函数,在括号中输入要输出的内容,即可实现输出的功能。
>>> print("Hello World!")
print() 函数可以接受多个字符串,并且用逗号隔开,可以输出这个字符串序列。
print("My name is", "canshi!") My name is canshi!
print() 也可以打印整数,或者打印计算的结果,如:
>>> print(1314) 1314 >>> print(1314 + 512) 1826
同样,如果我们希望可以打印出更好看的结果与我们需要了解的中间过程。
>>> print("1314 + 520 = ", 1314 + 512) #其中,python有一个自动转换的机制,将1314+512的结果转成了字符串类型! 1314 + 512 = 1826
3.2 输入
在实际中,我们需要动态地输入一些变量的值,那么我们可以使用input() 函数,用户输入内容,程序保存在一个变量 之中,下次可以使用变量直接查看输入的变量内容,如下所示:
>>> name = input() canshi >>> name canshi
变量相当于是一个代号,计算机世界中如果类比人类世界,也是有很多的个体组成,人类世界有男人,女人,猫,狗等个体组成, 每个个体都有一个代号,如"James", "Curry"。计算机世界中,存在如浮点型、整型的数字,也有字符串等其它数据类型, 类比人类世界,需要给这些个体取个代号,就是变量名,如 a = 5, name="Trump" 。
对于input() 函数,在代码运行的时候是没有任何提示的,这时候我们需要在input()函数中写一个提示的字符串,如下:
>>> value = input("Please give a number of value!") Please give a number of value! 30 >>> value 30
我们可以在python文件中,使用input函数 ,如input.py文件:
value = input("please give a number of value!") print("value is ", value)
运行代码:
please give a number of value! 520 value is 520
4.常用数据类型
在python中,变量是不需要提前声明的,这点不同于C++。每个变量在使用前需要进行赋值,在赋值之后该变量才会创建,在Python中, 变量就是变量,没有类型,我们常说的"类型"指的是变量所指的内存中存储的对象的类型。首先我们需要了解下变量赋值。
4.1 变量赋值
如下代码举例:
>>> name = "James" >>> a = 111 >>> b = 3.14 >>> name "James" >>> a 111 >>> b 3.14
在python中,可以同事给多个变量赋值,如:
a = b = c = 520
如上面代码,首先创建了一个整型对象,为520,从后往前进行赋值,三个变量被赋予了同样的数值。也可以为多个变量指定 多个值,如下:
>>> a, b, c = 1, 2, 3 >>> a 1 >>> b 2 >>> c 3
分别给1,2,3三个整数对象分配给变量a,b,c。
4.2 标准的数据类型
Python中,有六个常用的标注数据类型:
-
Number(数字),其中包括整型,浮点型...
-
String(字符串)
-
List(列表)
-
Set(集合)
-
Tuple(元组)
-
Dictionary(字典)
其中如Number(数字), String(字符串), Tuple(元组)是不可变的数据类型。而List(列表),Dictionary(字典),Set(集合) 等结构是可以改变的。
4.2.1 Number(数字)
在Python3中,默认支持的数字类型为int、float、bool、complex(复数),在Python3中,使用int来表示长整型,没有了Long。 我们也可以使用内置的 type() 函数,来查询变量所指的对象类型。type函数,顾名思义,判断这个变量的类型。
>>> a, b, c, d = 1, 1.0, True, 1+1j >>> print(type(a), type(b), type(c), type(d)) <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
其中这个class,表示的是一个类,先不用管class是个啥,在面向对象的语言中,class是一个基本概念,后面我们会详细 介绍面向对象与class究竟是个啥,我们需要看后面带的'int', 'float'等类型。
其次,除了type(),还有instance()函数来判断是哪一种类型,如下:
>>> a = 111 >>> isinstance(a. int) True
Warning:isinstance()函数主要是一个判断的功能,需要我们判断是不是某一种类型的时候,我们用isinstance(),如果我们需要 得到这个对象的类型,那么可以直接用type()!
当我们指定了一个值之后,就会有一个Number对象创建,如:
a = 123
当然,在创建了变量之后,我们也可以对变量进行删除,删除的语法如下:
>>> del a >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined
Python的数值运算如下所示:
>>> 1 + 2 3 >>> 3.12 - 2 1.12 >>> 3 * 7 21 >>> 2 / 4 0.5 >>> 11 / 3 3.6666666666666665 >>> 11 // 3 3 >>> 11 % 3 2 >>> 2 ** 3 8
Python此外还还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,用得少,暂时就不 介绍了!
4.2.2 String(字符串)
对字符串进行操作举例:
>>> string = 'canshi' >>> print(string) #打印字符串 canshi >>> print(string[0:-1]) #输出第一个到倒数第二个的所有字符 cansh >>> print(string[0]) #输出字符串第一个字符 c >>> print(string[2:5]) #输出字符串第三个到第五个字符(5这边属于开区间) nsh >>> print(string[2:]) #输出从第三个到最后的字符 nshi >>> print(string * 2) #将string输出两次 canshicanshi >>> print(string + "123") #字符串拼接 canshi123
Python中字符串还有一个转义符\ ,如果不想使用反斜杠发生转义,则可以在前面添加一个r字符:
>>> print("ca\nshi") ca shi >>> print(r"ca\nshi") canshi
同时,需要注意的是,Python中的字符串类型是不能够改变的,如下:
>>> str = 'canshi' >>> str[0] = 'b' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
4.2.3 List(列表)
列表是写在方括号 []之中,用逗号进行分割的元素列表。与字符串一样,列表可以被索引与截取,列表被截取之后会返回一个包含所需 元素的新列表。
如下,为列表的基本操作:
>>> list_a = ['abc', '123', '520.1314', 'canshi'] >>> list_b = ['canshi', 'study!'] >>> list_a ['abc', '123', '520.1314', 'canshi'] >>> list_b list_b = ['canshi', 'study!'] >>> list_a[0] abc >>> list_a[1:3] ['123', '520.1314'] >>> list_a[2:] ['512.1314', 'canshi'] >>> list_b * 2 ['canshi', 'study', 'canshi', 'study'] >>> list_a + list_b ['abc', '123', '520.1314', 'canshi', 'canshi', 'study!'] >>> list_a.append('Hello') ['abc', '123', '520.1314', 'canshi', 'Hello'] >>> list_a.pop(2) ['abc', '123', 'canshi', 'Hello']
与字符串不同的是,list是可以进行元素修改的。如下所示:
>>> a = [1, 2, 3, 4, 5, 6] >>> a[0] = 0 >>> a[2:5] = [11, 12, 13] >>> a [0, 2, 11, 12, 13, 6] >>> a[2:5] = [] >>> a [0, 2, 6]
4.2.4 元组(Tuple)
元组与列表相似,不同之处为元组元素不能修改。元组的元素均写在小括号 () 中,并且用逗号进行隔开,同样,元组中的元素类型也是可以 不同的。
>>> tuple_a = ('123', 123, 123.0, 'canshi') >>> tuple_b = (520, 'canshi') >>> tuple_a ('123', 123, 123.0, 'canshi') >>> tuple_b (520, 'canshi') >>> tuple_a[0] 123 >>> tuple_a[1:3] 123, 123.0 >>> tuple_b * 2 (520, 'canshi', 520, 'canshi') >>> tuple_a + tuple_b #元组也可以进行拼接,形成一个新的元组 ('123', 123, 123.0, 'canshi', 520, 'canshi')
元组与字符串类似,可以被下表且索引。从0开始,-1为末尾开始的位置,也可以进行截取,用法与String类型是相似的,但是元组中的元素是 不可以被修改的,但是元组中的元素的元素是可以被改变的,不懂?上例子!
>>> typle_c = (1, 2, 3, 4, 5, 6) >>> typle_c[0] 1 >>> tuple_c[1:5] 2, 3, 4, 5 >>> tuple_c[0] = 520 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> tuple_d = ([1,2,3], 'canshi') >>> tuple_d[0][1] = 520 >>> tuple_d ([1. 520. 3], 'canshi')
4.2.5 集合(Set)
集合(Set)也是一种数据类型,由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。Set最典型的特点就是成员不能 重复。我们可以使用 {} 或者 set() 函数来创建集合,当我们创建空集合的时候,必须用 set() 而非 {} ,因为 {} 表示 空字典,同时集合中的元素是无序的。
>>> set1 = {'123', 123.0, 'canshi', '123'} >>> set1 {'123', 123.0, 'canshi'} >>> "123" in set1: True >>> a = set('1234567') >>> b = set('12345') >>> a - b #求差集 {'7', '6'} >>> a | b #求并集 {'7', '5', '1', '3', '2', '4', '6'} >>> a & b #求交集 {'5', '1', '3', '2', '4'} >>> a ^ b #求a和b中不同时存在的元素 {'6', '7'}
4.2.6 字典
字典在Python中是一个非常有用的内置数据类型,列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。 字典是一种映射关系,是一个无序的 键(key):值(value) 的集合。 字典中的键(key)必须是不可变类型,在同一个字典中,键是唯一的!
>>> dict_a = {} >>> dict_a['one'] = 'one' >>> dict_a[1] = 1 >>> dict_a['canshi'] = 'canshi' >>> dict_b = {'name': 'canshi', 'status': 0} >>> dict_a['one'] one >>> dict_a[1] 1 >>> dict_a.keys() dict_keys(['one', 1, 'canshi']) >>> dict_a.values() dict_values(['one', 1, 'canshi'])
同时,我们可以对键值对进行遍历,如下代码所示:
>>> dict1 = {'1': 1, '2': 2, '3':3} >>> for k, v in enumerate(dict1): ... print("k is", k, "v is", v) ... k is 0 v is 1 k is 1 v is 2 k is 2 v is 3
4.2.7 其它常用数据转换
函数 | 描述 | 举例 | 输出 |
---|---|---|---|
int(x) | 将x转换为一个整数 | int(3.14) | 3 |
int(x, base) | 将x按照base进行进制转换,但是x需要是字符串类型 | int('12',16) | 18 |
float(x) | 将x转换到一个浮点数 | float(3) | 3.0 |
str(x) | 将x转换到字符串 | str(3.14) | '3.14' |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 | eval('pow(2,2)') | 4 |
tuple(s) | 将序列 s 转换为一个元组 | tuple([1,2,3]) | (1, 2, 3) |
list(s) | 将序列 s 转换为一个列表 | list((1, 2, 3)) | [1, 2, 3] |
set(s) | 转换为可变集合 | set([1, 2, 3, 4]) | (1, 2, 3, 4) |
dict(d) | 创建一个字典。d 必须是一个 (key, value)元组序列。 | dict([('one', 1), ('two', 2), ('three', 3)]) | {'one': 1, 'two': 2, 'three': 3} |
frozenset(s) | 转换为不可变集合 | b = frozenset('runoob') | frozenset({'o', 'u', 'r', 'b', 'n'}) |
5. 关于我
欢迎加我微信,每天16个小时在线