第二章 Python 基础知识


      世界上大多数计算机语言是C-like语言,Python其基础语法与C语言非常相似。(莫名感觉学习C语言的重要性 .jpg)

基本语法

  1. 声明 (了解一下)

要为源文件指定特定的字符编码格式,需要在文件的首行或第二行插入一行注释,称为编码声明。这一声明必须放在首行或第二行的原因是:注释行都是以#号开头的,不会被机器编译。编码声明虽然不属于注释行,但同样以#号开头,可能会被机器误识别为注释,只有放在首行或第二行的位置,才能被机器正常识别并编译。编码声明的格式如下:

# -*- coding: utf –8 -*-

通过编写这一声明,源文件中的所有字符都被当作coding指代的UTF-8编码对待。
编写Python脚本时,除声明编码格式外,常常也会加上一个路径声明。路径声明的格式如下:

# !/usr/bin/Python

路径声明指出了系统执行py文件时,调用的是/usr/bin下的Python解释器。路径声明一般放在脚本首行。

  1. 注释 (注释是提高代码可读性的必要措施)

注释里的内容并不会参与编译,注释是对代码做出说明的文字。
单行注释以#号开头,#号后到换行之前的所有字符都是注释部分

#这是一个单行注释

多行注释时每行前均需要加上#号

#这是一个使用#号的多行注释
#这是一个使用#号的多行注释

也可使用3个单引号(’’’)或3个双引号("”””)将注释对象括起来。

'''
该多行注释使用的是3个单引号
该多行注释使用的是3个单引号
'''
"""
该多行注释使用的是3个双引号
该多行注释使用的是3个双引号
"""

  1. 缩进 (清晰的结构与严谨的逻辑相对应,虽然IDE会提供Reformat Code的选项)

代码首行的空白称为缩进可用4个空格或制表符创建。Python代码的一大特色就是用缩进的方式标识代码结构,而Java和C++等语言使用大括号{ }。

  1. 多行语句

用反斜杆(\)可以实现长语句的换行,且不会被机器识别成多个语句。

但在[ ]、{ }、( )等不同括号内,多行语句换行时不需要使用反斜杆(\),直接换行即可。

除了将一个语句拆分为多行外,Python也支持在一行中实现多个语句,使用分号(;)将短语句隔离。

  1. 保留字符

Python中的标识符是指变量、函数、类、模块及其他对象的名字,可以包含字母、数字和下划线(_),但必须以非数字字符开始。特殊符号,如$、%、@等,不能用在标识符中。

标识符对大小写敏感,比如“UFO”和“ufo”就是两个不同的对象。

保留字符即关键字,是编程语言中已经定义过的字符。输入查询保留字符的指令,即可获取保留字符名单。

import keyword ; print('Python中所有的保留字符为:\n',keyword.kwlist)
Python中所有的保留字符为:
['False', 'None', 'True', '__peg_parser__', '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. 赋值

Python中的赋值方式有四种,除最基本的赋值形式外,还有序列赋值、链接赋值和增量赋值等方式。

赋值的最基本形式是以等号(=)为连接,将要赋值的变量放在等号左侧,将要赋给的值放在等号右侧。

num_int = 20 ;  num_float = 2.1  ;  string= 'python'
print('这是基本形式的赋值:',num_int,num_float,'python')
这是基本形式的赋值: 20 2.1 python


序列赋值的基本形式是将多个变量排成变量序列,变量之间使用逗号相连,使用等号作为赋值符号,后接值序列,值之间用逗号相连。序列赋值在变量序列与值序列之间建立了依次映射的关系。

num_int,string,list1 = 123,'str',[4,6]
print('这是序列形式的赋值:',num_int,string,list1)
这是序列形式的赋值: 123 str [4, 6]


链接赋值的基本形式是将多个变量用等号相连,在末个变量后用等号连接一个赋值。链接赋值只适用于给多个变量赋予同一值的情况,又称为多目标赋值。

str1 = str2 = str3 = 'CODE'
print('这是链接形式的赋值:',str1,str2,str3)
这是链接形式的赋值: CODE CODE CODE


增量赋值,又称为增强赋值,其基本形式是将原始赋值语句改写,去掉赋值符号右侧变量,将赋值符号右侧运算符挪至符号左侧,形成新的运算式。增量赋值的优势在于可以减少输入代码的工作量。

x = 100;  x+=10
print('这是增量形式的赋值:',x)
这是增量形式的赋值: 110

运算符


运算符是运算法则的具体体现。Python提供了算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、身份运算符和成员运算符7类运算符,从而实现了丰富多样的运算功能。

  1. 算术运算符
    进行除法运算时,不管商为整数还是浮点数,运算结果始终为浮点数。要得到整型的商,需要用双斜杆做整除,且除数必须是整型的。对于其他的运算,只要任一运算数为浮点数,运算结果就是浮点数。
算术运算符 说明
+ 加法
- 减法
* 乘法或返回一个被重复若干次的字符串
/ 除法
% 取模,返回除法的余数
** 幂,返回幂次
// 整除,返回商的整数部分
  1. 赋值运算符
赋值运算符 说明
= 赋值运算
+= 加法赋值运算
-= 减法赋值运算
*= 乘法赋值运算
/= 除法赋值运算
%= 取模赋值运算
**= 幂赋值运算
//= 取整除赋值运算
  1. 比较运算符
    Python中的字符使用ASCALL编码,每个字符都有属于自己的ASCALL码,字符比较的本质是字符ASCALL码的比较
比较运算符 说明
== 比较对象是否相等
!= 比较对象是否不等
> 表示大于比较
< 表示小于比较
>= 表示大于等于比较
<= 表示小于等于比较
  1. 逻辑运算符
    逻辑运算即判断事物之间的“与”“或”“非”关系
逻辑运算符 说明
and
or
not
  1. 按位运算符 (详情须了解二进制编码规则)
按位运算符 说明
& 按位与,参与运算的两个值相应位都为1,则该位的结果为1,否则为0
| 按位或,对应的二进制位有一个为1,结果位就为1
^ 按位异或,两个对应的二进制位相异时,结果为1
~ 按位取反,把1变为0,把0变为1
<< 左移,由“<<”右边的数指定移动位数,高位丢弃,低位补0
>> 右移,“>>”左边运算数的二进制位全部右移,“>>”右边的数指定移动的位数
  1. 身份运算符
    身份运算符用于比较两个对象的存储单位,当a、b获取到一样的值时,两个变量就获取同样的内存地址。
身份运算符 说明
is 判断两个对象的存储单位是否相同
not 判断两个对象的存储单位是否不同
  1. 成员运算符
    成员运算符的作用是判断某个指定值是否存在某一序列中,包括字符串、列表和元组。
成员运算符 说明
in 在指定序列中找到指定值
not in 在指定序列中没有找到指定值
  1. 运算符优先级
    优先级从上往下依次降低,同一优先级的运算符按从左到右的顺序进行运算。
运算符 说明
** 指数
~ + - 按位翻转,一元加号和减号(+@和-@)
* / % // 乘、除、取模和取整除
+ - 加法、减法
>> << 右移、左移运算符
& 位“AND”
^ | 位运算符
<= <> >= 比较运算符
<> == != 等于运算符
= % = /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
and or not 逻辑运算符

数据类型

  1. number
    将int转换为二进制、八进制和十六进制数,分别需要通过bin函数、oct函数和hex函数进行创建或转换。
    由于bool值继承了int类型,所以可直接用于数学运算,True = 1,False = 0。
    通过type函数可以判断对象的数据类型。
    不同的number类型通过函数可以相互转换,使用代表number类型的函数即可。也可以进行混合运算,运算时自动转换成同一类型,然后再进行运算。转换遵守一定的方向:int向float转换,非complex向complex转换。
整数类型 举例
整数 int 1、10、100
浮点数 float 15.20、-21.9、30.1+e18
复数 complex 3.14j、45.j、9322e-36j
布尔值 bool 0、1
  1. str
    字符串类型。创建一个str,除字符外,还要在字符序列的首尾加上引号。使用单引号(’)、双引号(’’)是等效的,但需要保证str两端的引号类型相同。
    如果要指定一个多行的str,则需要使用三引号(’’’)。str支持索引, “变量[下标]”索引单个数值,“变量[头下标:尾下标]”能够进行切片。
    字符串str还有丰富的查询和改写操作函数等。
str = 'YouCanLearnPython'
print('YouCanLearnPython[6:11] = ',str[6:11])#从第7个字符开始索引,到第12个字符
print('YouCanLearnPython[-11:-6] = ',str[-11:-6])#从倒数第11个字符开始索引,到倒数第6个字符
print('YouCanLearnPython[:5] = ',str[:6])#从第1个字符开始索引,到第7个字符
print('YouCanLearnPython[6:] = ',str[6:])#从第7个字符开始索引,到最后一个字符截止
print('YouCanLearnPython[1:10:4] = ',str[1:10:4])#从第2个元素开始索引,到第11个元素,步距为4
print('YouCanLearnPython[::-1] = ',str[::-1])#反向索引
YouCanLearnPython[6:11] =  Learn
YouCanLearnPython[-11:-6] =  Learn
YouCanLearnPython[:5] =  YouCan
YouCanLearnPython[6:] =  LearnPython
YouCanLearnPython[1:10:4] =  onr
YouCanLearnPython[::-1] =  nohtyPnraeLnaCuoY
  1. list
    列表,属于序列类数据,是包含0或多个对象引用的有序序列。由于list中所有的数据项都是对象引用,因此list可以存放任意数据类型的数据项,既可以是int、float、str等这种基础数据类型,也可以是list、tuple、dict等这一类的复合数据类型。
    list可以使用方括号“[ ]”:空的方括号创建空的list;包含多个项的list可以在方括号中使用逗号分隔的项序列创建。也可以通过list函数创建,list函数最多接受一个参数; 不带参数调用函数时返回空list; 带参数时返回参数的浅拷贝(在有指针的情况下,浅拷贝只是增加了一个指针,指向已经存在的内存);对复杂参数(非基本元素,如复合数据类型)则尝试将给出的对象转换为list。
list方法 函数
定位某个匹配项 list.index()
指定位置插入元素 list.insert()
将一个list扩展至另一list list.extend()
按对象删除list中的第1个匹配项 list.remove()
对原list进行排序 list.sort()
统计list中某个元素出现的次数 list.count()
追加元素元素至list末尾 list.append()
按位置删除list中的元素 list.pop()
反向排序list元素 list.reverse()
  1. tuple
    元组,tuple是包含0个或多个对象引用的有序序列。与list不同的是,tuple是不可更改的数据类型。
    tuple可以用圆括号()创建:空的圆括号创建空的tuple;包含一个或多个项的tuple可以使用逗号分隔开元素;如果tuple内只包含一个元素,需要在元素后加上逗号予以区分。有时,tuple必须被包含在圆括号中以避免语义二歧性。例如,要将tuple(1,2,3)传递给一个函数,应该写成function((1,2,3))的形式,以免被识别成“1,2,3”这三个数字变量。
    与list不同的是,tuple中的元素无法做增删操作,只能用del函数删除整个tuple。
tuple方法 函数
计算某一元素在tuple中出现的次数 tuple.count()
找出某一元素在tuple中首次出现的位置 tuple.index()
  1. dict
    dict又称字典,属于映射类数据。Dic通过键而不是位置来索引,键是不可变对象(如number、str、tuple)的对象引用,值是可以指向任意类型对象的对象引用。同一个键不允许出现两次,创建dict时如果同一个键被赋值两次,只有后一个值会被记住。
    dict可以用花括号{ }创建:使用空的花括号创建空的dict; 非空的花括号包含一个或多个逗号分隔的项,每个项包含一个键、一个冒号以及一个值。

用{ }创建

dict1 = {}
dict1['one']  = 'This is 1'
dict1['two']  = 'This is 2'
print('查看字典:',dict1)
查看字典: {'one': 'This is 1', 'two': 'This is 2'}

用dict()函数创建

dict2 = dict(name = '小明', height = 187)
print('查看字典:',dict2)
查看字典: {'name': '小明', 'height': 187}
  1. set
    Python中有两种内置集合类型:set(可变集合)和frozenset(不可变集合)。set是引用零个或多个对象的无序组合,所引用的对象都是不可变的,所有内置的固定数据类型(如float、frozenset、int、str、tuple)都是不可变的。
    set可以使用花括号{ }或set函数创建。使用花括号{ }创建集合使用{ }包裹一个或多个项,项与项间用“ ,”分割;空的set无法用{ }创建。
    set是可变的,但由于其中的项是无序的,因此没有索引的概念。set可变而无法索引,这使得它无法通过查询和修改元素的操作,但仍旧支持元素的删改,并可以清空和拷贝。set的常用操作基本都需要通过内置方法。
    (数据类型的特点是为数据类型的功能而服务的)

Python I/O

  1. input:
    Python3中的input函数默认接受数据都为str 。 变量名 = input(" ")

  2. print:
    print函数可以接收多个str,并需要用逗号隔开,print函数会依次打印每个str,遇到逗号则输出一个空格,因此输出的str是拼起来的。
    print函数也可以自动计算结果,如运行“print(number1+number2)”语句。用format函数可参与格式化输出。

  3. 文件I/O

文件I/O函数 形式
open函数 open(filename,mode)
read函数 f = open(filename,mode); f.read(size)
write函数 f = open(filename,mode); f.write(str)
close函数 fileObject.close()

第二章课后题概述

  1. A
    多行注释除了使用#号外,也可以使用引号,但需保持前后三个引号的类型一致; 在代码中添加注视是为了提高代码的可读性

  2. D
    除加减乘除外,还有取模%、幂**和取整除// ;“=”表示赋值,“==”表示比较是否相等; or“一者为真即为真”

  3. C
    str是可变的数据类型,内置方法丰富; list.pop是按位置删除list中的元素; dict通过键而不是位置来索引

  4. A
    Python3中主要的整数数据类型只有int,不再保留long; Python并不支持查询str中某个字符的位置; list可以存放任意数据类型,这是因为其内部的数据项都是对象引用; set引用的对象只能是不变的,其是引用零个或多个对象的无序组合。

  5. B
    open函数的只读打开时是r模式,w模式表示“打开一个文件用于写入,如果该文件已存在则将其覆盖,若不存在则创建新文件”; write函数可将任何str写入打开的文件,其中的str可以是二进制数据,而不限于文字; 要写入str以外的内容,要先将写入的内容转化为str; 用close函数关闭文件,是为了信息的完整。

  6. 填空题
    (1)实现多行语句用 \ 即可,但在[ ]、{ }、()内的长语句以逗号结尾,直接换行即可。
    (2)同一优先级运算符的运算顺序是从左到右。
    (3)str内置方法的功能集中在查询和改写两个方面。
    (4)dict无法使用str式的索引格式,但支持以键查值的形式。
    (5) 文件在读写操作后必须用close函数关闭文件,以避免信息保存的不完整。

  7. 判断运算结果区间

# 判断6的3次方除以4的计算结果是否在列表[18, 20, 54]中
print('6的3次方除以4,结果在[18, 20, 54]中:', 6 ** 3 / 4 in [18, 20, 54])
6的3次方除以4,结果在[18, 20, 54]中: True
  1. 创建列表
# 创建列表
#方法1:[]创建
list1 = [10086, 10000, 10010, '中国移动', '中国电信', '中国联通']
#方法2:list函数创建
list2 = list((10086, 10000, 10010, '中国移动', '中国电信', '中国联通'))
print('list1:', list1)
print('list2:', list2)
print('list1和list2的类型分别为:', type(list1), type(list2))
list1: [10086, 10000, 10010, '中国移动', '中国电信', '中国联通']
list2: [10086, 10000, 10010, '中国移动', '中国电信', '中国联通']
list1和list2的类型分别为: <class 'list'> <class 'list'>
  1. 创建元组
# 创建元组
#方法1:()创建
tuple1 = ('China', 'Chinese', 960, 56, '中国')
#方法2:tuple函数创建
tuple2 = tuple(['China', 'Chinese', 960, 56, '中国'])
print('tuple1:', tuple1)
print('tuple2:', tuple2)
print('tuple1和tuple2的类型为:', type(tuple1), type(tuple2))
tuple1: ('China', 'Chinese', 960, 56, '中国')
tuple2: ('China', 'Chinese', 960, 56, '中国')
tuple1和tuple2的类型为: <class 'tuple'> <class 'tuple'>
  1. 创建字典
# 创建字典
#方法1:{}创建
dict1 = {'中国': 'China', '美国':'America'}
#方法2:dict()函数创建
dict2 = dict(中国='China', 美国='America')
print('dict1:', dict1)
print('dict2:', dict2)
print('dict1和dict2的类型为:', type(dict1), type(dict2))
dict1: {'中国': 'China', '美国': 'America'}
dict2: {'中国': 'China', '美国': 'America'}
dict1和dict2的类型为: <class 'dict'> <class 'dict'>
  1. 创建集合
# 创建集合
#方法1:{}创建
set1 = {'China', 'America', 'Russia', 'Germany', 'France'}
#方法2:set函数创建
set2 = set(['China', 'America', 'Russia', 'Germany', 'France'])
print('set1:', set1)
print('set2:', set2)
print('set1和set2的类型为:', type(set1), type(set2))
set1: {'America', 'Germany', 'Russia', 'China', 'France'}
set2: {'Germany', 'Russia', 'France', 'China', 'America'}
set1和set2的类型为: <class 'set'> <class 'set'>

(综上可见,创建方法都是符号创建加函数转换这两大类)

  1. 读取文件操作
# 读取 txt 文件内容,存到 content1 变量中
f = open('C:\\Users\\Lenovo\\Desktop\\test.txt','r')
content1 = f.read()
print('原文件内容:', content1)
f.close()
原文件内容: 10×10

f = open('C:\\Users\\Lenovo\\Desktop\\test.txt', 'a+')
# 追加解答结果
f.write('=100')
f.close()


     注:代码除部分经本人修改外,主要来自 机械工业出版社的《Python3智能数据分析快速入门》 的配套资料。

【整理】Python学习笔记1.2相关推荐

  1. OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并

    OpenCV之Python学习笔记 一直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看到一本国外的新书< ...

  2. Python学习笔记:电子邮件,POP3收取邮件

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  3. Python学习笔记之类型判断,异常处理,终止程序操作小结

    Python学习笔记之类型判断,异常处理,终止程序操作小结 运行结果: 这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发. 爬虫.数据分析.数据可视化.机 ...

  4. python学习笔记_week14

    python学习笔记_week14 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. s1 1 import sock ...

  5. OpenCV之Python学习笔记

    RSS订阅 登陆 注册 原文链接地址:http://www.itozi.net/19477.html OpenCV之Python学习笔记 ITOZI 发布于 2015-08-06 分类:OpenSta ...

  6. 我的python学习笔记全集_Python学习笔记(1):助你我一起共同成长

    最近在学习python时,萌生了一个想法,把自己在学习过程中的知识做一个笔记再分享出来,既帮助了大家又能让自己重温知识,今天就发一下python学习笔记(1),助你我一起成长! 一.Python初识与 ...

  7. 零基础学Python学习笔记

    Python学习笔记 代码下载地址 链接:https://pan.baidu.com/s/1yGnpfq4ZHeKpt4V0J_PTSg 提取码:hmzs 1. Python 基础语法 1.1 基本数 ...

  8. python 学堂在线_(3.7学堂在线python学习笔记)

    @[TOC](3.7学堂在线python学习笔记) # 重要笔记 1. 启发式算法 启发式算法(heuristic algorithm)是相对于最优化算法提出的.一个问题的最优算法求得该问题每个实例的 ...

  9. Python学习笔记·交互式图形编程

    Python学习笔记·交互式图形编程 注:在校计算机学生一名,菜鸟一枚,最近开始学习Python的基础知识希望有什么不对的地方各位大佬能够不令赐教! 课程是在中国大学MOOC上学的,有兴趣的同学可以自 ...

  10. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

最新文章

  1. JetsonTX2上安装tensorflow的心酸史
  2. linux创建sftp用户并指定访问目录,linux – 创建SFTP用户只能访问一个目录.
  3. 手把手Fiddler掌握
  4. php的符号的排序大小
  5. oracle 事务未正常回滚,Spring事务没有回滚异常(Oracle JNDI数据源)
  6. 用计算机如何扫描文件,打印机扫描文件到电脑方法教程
  7. 读书笔记 | 财务会计理论(第7版 William R.Scott)(中)
  8. Unreal 和 Unity 3D 各有什么特点?如何选择?
  9. python将二维数组升为一维数组 或 二维降为一维
  10. 强制浏览器使用webkit内核
  11. mysql存小程序获取到的带有表情的昵称_拉取用户信息,带表情的昵称,存储到数据库是???要怎么处理...
  12. Worthington核心酶——木瓜蛋白酶的特征及相关应用
  13. 灰色预测(MATLAB)
  14. 小满网络模型http1-http2 浏览器缓存
  15. 摄影测量外方位元素代码
  16. 适合新手练手的三个python简单小游戏
  17. 自然语言处理NLP中文分词,词性标注,关键词提取和文本摘要
  18. 职业操盘手的止损法则
  19. 手机端怎么限制wifi网速
  20. laravel表单提交419解决办法

热门文章

  1. vue 表单问卷类型实现
  2. plsql查询是否锁表Oracle
  3. Linuc云面板---旗鱼云梯操作使用说明
  4. 办公OA系统毕业设计论文
  5. 让终端泄密行为明明白白的局域网监控应用
  6. DoIP协议源码 车载以太网诊断协议ISO13400协议源码
  7. 【漏洞复现】phpStudy 小皮 Windows面板 RCE漏洞
  8. 删除文件中的指定文件
  9. 微信小程序和野狗数据库结合
  10. 基于uniapp开发DiscuzQ社区的ios和安卓、小程序H5