【整理】Python学习笔记1.2

第二章 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转换。
整数类型举例
整数 int1、10、100
浮点数 float15.20、-21.9、30.1+e18
复数 complex3.14j、45.j、9322e-36j
布尔值 bool0、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扩展至另一listlist.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])
63次方除以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

test内容

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值