Wyl

V1

2022/03/04阅读:66主题:山吹

python | python基础语法

Python基础

数字类型及操作

1.整数类型

  • 二进制,以0b或0B开头
  • 八进制,以0o或0O开头
  • 十六进制,以0x或0X开头

2.浮点数类型

  • 可用科学计数法表示:<a>e<b>表示
  • 运算存在不确定尾数,用round()解决

3.数值运算操作符

  • 整数除 x//y结果为x与y整数商
  • 取余数 x%y结果为x除以y的余数
  • 幂运算 x**y结果为x的y次幂

字符串类型及操作

1.字符串的表示

  • 单引号、双引号或三单引号

2.字符串操作符

  • x+y 连接两个字符串
  • n*x 复制n次字符串x
  • x in s 如果x是s的子串,返回True,否则返回False

3.字符串处理函数

  • len(x) 返回字符串x的长度
  • str(x) 返回任意类型x所对应的字符串形式
  • chr(u) 由Unicode编码转化为对应字符
  • ord(x) 由字符转化为对应Unicode编码

4.字符串处理方法

"方法"在编程中是一个专有名词

  • str.lower()str.upper() 对应小写大写
  • str.split(sep=None) 由str根据sep被分隔的部分切割成一个列表
  • str.count(sub) 返回子串sub在str中出现的次数
  • str.strip(chars) 从str中去掉在其左侧和右侧chars中列出的字符,"= python= ".strip(" =np") 结果为"ytho"
  • str.join(iter) 在iter变量除最后元素外每个元素后增加一个str,",".join("12345") 结果为"1,2,3,4,5" ,主要用于字符串分隔等

5.字符串格式化

  • 字符串类型的格式化类型:.format()方法
  • .format()方法的格式控制

例子

>>>"{0:,.2f}".format(12345.6789)
'12,345.68'
>>>"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
'110101001,Ʃ,425,651,1a9,1A9'
>>>"{0:e},{0:E},{0:f},{0:%}".format(3.14)
'3.140000e+00,3.140000E+00,3.140000,314.000000%'

time库基础

1.时间获取函数

  • time() 获取当前时间戳,即计算机内部时间值,浮点数
>>>time.time()
1516939876.6022282
  • ctime() 获取当前时间并以易读方式表示,返回字符串
>>>time.ctime()
'Fri Jan 26 12:11:16 2018'
  • gmtime() 获取当前时间,表示为计算机可处理的时间格式
>>>time.gmtime()
time.struct_time(tm_year=2018, tm_mon=1,
tm_mday=26, tm_hour=4, tm_min=11, tm_sec=16,
tm_wday=4, tm_yday=26, tm_isdst=0)

2.时间格式化

  • strftime(tpl, ts) tpl是格式化模板字符串,用来定义输出效果,ts是计算机内部时间类型变量
>>>t = time.gmtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",t)
'2018-01-26 12:55:20'

%Y %m %d %H %M %S 分别表示年月日时分秒

  • strptime(str, tql) str是字符串形式的时间值,tpl是格式化模板字符串,返回计算机内部时间类型变量
>>>timeStr = '2018-01-26 12:55:20'
>>>time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=12, tm_min=55, tm_sec=20, tm_wday=4, tm_yday=26, tm_isdst=-1)

程序的分支结构

1.单分支结构

if guess == 99:
    print("猜对了")

2.二分支结构

if guess == 99:
    print("猜对了")
else:
    print("猜错了")
  • 二分支结构紧凑形式,适用于简单表达式的二分支结构,<表达式1> if <条件> else <表达式2>
guess = eval(input())
print("猜{}了".format("对" if guess==99 else "错"))

3.多分支结构

  • 注意多条件之间的包含关系
  • 注意变量取值范围的覆盖
if 条件1
 表达式1
elif 条件2
 表达式2
elif 条件3
 表达式3

4.程序的异常处理

  • 异常处理的基本使用
try :
 <语句块1>
except :
 <语句块2>

try :
 <语句块1>
except <异常类型> :
 <语句块2>

程序的循环结构

1.遍历循环

  • 根据遍历结构的不同,可分为计数循环(N次)、字符串遍历循环、列表遍历循环、文件遍历循环
for <循环变量> in <遍历结构>:
 <语句块>

2.无限循环

while <条件>:
 <语句块>

3.循环控制保留字

  • break跳出并结束当前整个循环,执行循环后的语句
  • continue结束当次循环,继续执行后续次数循环

4.循环的高级用法

  • 当循环没有被break语句退出时,执行else语句块
  • else语句块作为"正常"完成循环的奖励
  • 这里else的用法与异常处理中else用法相似
for c in "PYTHON" :
 if c == "T" :
  continue
 print(c, end="")
else:
 print("正常退出")

PYHON正常退出
for c in "PYTHON" :
 if c == "T" :
  break
 print(c, end="")
else:
 print("正常退出")
    
PY

函数和代码的复用

1.函数的定义

  • 函数是一段具有特定功能的、可重用的语句组,两个作用给
    1. 降低编程难度
    2. 代码复用
  • 计算n!例子
def fact(n):
    s = 1
    for i in rang(1,n+1):
        s *= i
    return s
  • 函数定义时,所指定的参数是一种占位符,只是一种符号
  • 保留字return可以返回任意多个结果

2.函数的调用

  • 调用时要给出实际参数
def fact(n):
    s = 1
    for i in rang(1,n+1):
        s *= i
    return s
a = fact(10)

3.局部变量和全局变量

  • 基本数据类型,无论是否重名,局部变量与全局变量不同
  • 可以使用global保留字在函数内部使用全局变量
  • 组合数据类型,如果局部变量未真实创建,则是全局变量

4.代码复用

  • 函数和对象是代码复用的两种主要形式

5.函数递归

  • 函数定义中调用函数自身的方式,函数递归的两个特征:
    1. 链条:计算过程存在递归链条
    2. 基例:存在一个或多个不需要再次递归的基例
  • 递归的实现:函数+分支语句
    1. 递归本身是一个函数,需要函数定义方式描述
    2. 函数内部,采用分支语句对输入参数进行判断
    3. 基例和链条,分别编写对应代码
def f(n):
 if n == 1 or n == 2 :   
  return 1   #递归基例
 else :
  return f(n-1) + f(n-2#递归链条  

序列类型及操作

1.序列类型定义

  • 具有先后关系的一组元素
  • 序列类型数据包括:字符串类型元组类型列表类型
  • 正向序号0开始,负向序号-1开始

2.序列类型通用操作符

  • x in s
  • x not in s
  • s + t
  • s*n n为具体正整数
  • s[j] 根据元素序号索引
  • s[i:j]s[i:j:k] 切片

3.序列类型通用函数和方法

  • len(s)
  • min(s)
  • max(s)
  • s.index(x) 返回序列s从i开始到j位置中第一次出现元素x的位置
  • s.count(x)

4.元组类型及操作

  • 一旦创建就不能被修改
  • 元素间用逗号, 分隔
  • 可以使用或不使用小括
>>> creature = "cat""dog""tiger""human"
>>> creature
('cat''dog''tiger''human')
  • 继承序列类型全部通用操作,元组因为创建后不能修改,因此没有特殊操作

5.列表类型及操作

  1. 列表类型定义
    • 列表是一种序列类型,创建后可以随意被修改
    • 使用方括号[] 或list() 创建,元素间用逗号, 分隔
    • 列表中各元素类型可以不同,无长度限制
  2. 列表类型操作方法
函数或方法 描述
ls[i] = x 替换列表ls第i元素为x
ls[i:j:k] = lt 用列表lt替换ls切片后所对应元素子列表
del ls[i] 删除列表ls中第i元素
del ls[i: j: k] 删除列表ls中第i到第j以k为步长的元素
ls += lt 更新列表ls,将列表lt元素增加到列表ls中
ls *= n 更新列表ls,其元素重复n次
函数或方法 描述
ls.append(x) 在列表ls最后增加一个元素x
ls.clear() 删除列表ls中所有元素
ls.copy() 生成一个新列表,赋值ls中所有元素
ls.insert(i,x) 在列表ls的第i位置增加元素x
ls.pop(i) 将列表ls中第i位置元素取出并删除该元素
ls.remove(x) 将列表ls中出现的第一个元素x删除
ls.reverse() 将列表ls中的元素反转

字典类型及操作

1.字典类型定义

  • 字典类型是“映射”的体现
  • 键值对:键是数据索引的扩展
  • 字典是键值对的集合,键值对之间无序
  • 采用大括号{}和dict()创建,键值对用冒号: 表示
  • "[ ]" 用来向字典变量中索引或增加元素
d = {"中国":"北京","美国":"华盛顿","法国":"巴黎"}
d[日本] = 东京 #增加键值对

2.字典类型操作函数和方法

函数或方法 描述
del d[k] 删除字典d中键k对应的数据值
k in d 判断键k是否在字典d中,如果在返回True,否则False
d.keys() 返回字典d中所有的键信息
d.values() 返回字典d中所有的值信息
d.items() 返回字典d中所有的键值对信息
函数或方法 描述
d.get(k, <default>) 键k存在,则返回相应值,不在则返回
d.pop(k, <default>) 键k存在,则取出相应值,不在则返回
d.popitem() 随机从字典d中取出一个键值对,以元组形式返回
d.clear() 删除所有的键值对
len(d) 返回字典d中元素的个数

文件和数据格式化

1.文件的类型

  • 文件展现形态:文本文件和二进制文件
  • 本质上,所有文件都是二进制形式存储
    1. 文本文件:由单一特定编码组成的文件,如UTF-8编码,适用于例如:.txt文件、.py文件等
    2. 二进制文件:直接由比特0和1组成,没有统一字符编码,适用于例如:.png文件、.avi文件等

2.文件的打开关闭

  • 文件的处理步骤:打开-操作-关闭
<变量名> = open(<文件名-包括文件路径和名称>,<打开模式>)
  • 文件打开模式
文件的打开模式 描述
'r' 只读模式,默认值,如果文件不存在,返回FileNotFoundError
'w' 覆盖写模式,文件不存在则创建,存在则完全覆盖
'x' 创建写模式,文件不存在则创建,存在则返回FileExistsError
'a' 追加写模式,文件不存在则创建,存在则在文件最后追加内容
'b' 二进制文件模式
't' 文本文件模式,默认值
'+' r/w/x/a一同使用,在原功能基础上增加同时读写功能
  • 文件的关闭<变量名>.close()

3.文件内容的读取

操作方法 描述
<f>.read(size=-1) 读入全部内容,如果给出参数,读入前size长度
<f>.readline(size=-1) 读入一行内容,如果给出参数,读入该行前size长度
<f>.readlines(hint=-1) 读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行

4.数据的文件写入

操作方法 描述
<f>.write(s) 向文件写入一个字符串或字节流
<f>.writelines(lines) 将一个元素全为字符串的列表写入文件,以字符串形式
<f>.seek(offset) 改变当前文件操作指针的位置,offset含义如下:0 – 文件开头; 1 – 当前位置; 2 – 文件结尾

一维数据的格式化和处理

1.一维数据定义

  • 由对等关系的有序或无序数据构成,采用线性方式组织
  • 对应列表、数组和集合等概念

2.一维数据的表示

  • 如果数据间有序:使用列表类型
  • 如果数据间无序:使用集合类型

3.一维数据的存储

  • 存储方式一:空格分隔
    • 使用一个或多个空格分隔进行存储,不换行
    • 缺点:数据中不能存在空格
  • 存储方式二:逗号分隔
    • 使用英文半角逗号分隔数据进行存储,不换行
    • 缺点:数据中不能有英文逗号
  • 存储方式三:其他方式
    • 使用其他符号或符号组合分隔,建议采用特殊符号
    • 缺点:需要根据数据特点定义,通用性较差

4.一维数据的读入处理

  • 从空格分隔的文件中读入数据
txt = open(fname).read()
ls = txt.split()  #根据空格分隔部分切割并返回列表
f.close()
  • 从特殊符号分隔的文件中读入数据
txt = open(fname).read()
ls = txt.split("$")
f.close()

5.一维数据的写入处理

  • 采用空格分隔方式将数据写入文件
ls = ['中国''美国''日本']
f = open(fname, 'w')
f.write(' '.join(ls))
f.close()
  • 采用特殊分隔方式将数据写入文件
ls = ['中国''美国''日本']
f = open(fname, 'w')
f.write('$'.join(ls))
f.close()

二维数据的格式化和处理

1.二维数据的python表示

  • 列表类型:list in list

2.CSV数据存储格式

  • 国际通用的一二维数据存储格式,一般.csv扩展名
  • 每行一个一维数据,采用逗号分隔,无空行
  • Excel软件可读入输出,一般编辑软件都可以产生
  • 如果某个元素缺失,逗号仍要保留
  • 二维数据的表头可以作为数据存储,也可以另行存储
  • 逗号为英文半角逗号,逗号与数据之间无额外空格
  • 按行存或者按列存都可以,具体由程序决定
  • 一般索引习惯:ls[row] [column],先行后列
  • 根据一般习惯,外层列表每个元素是一行,按行存

3.二维数据的读入处理

  • 从CSV格式的文件中读入数据
fo = open(fname)
ls = []
for line in fo:
 line = line.replace("\n","")
 ls.append(line.split(","))
fo.close()

4.二维数据的写入处理

  • 将数据写入CSV格式的文件
ls = [[], [], []] #二维列表
f = open(fname, 'w')
for item in ls:
 f.write(','.join(item) + '\n')
f.close()

5.二维数据的逐一处理

  • 采用二层循环
ls = [[], [], []] #二维列表
for row in ls:
 for column in row:
  print(ls[row][column])

程序设计方法学

1.自顶向下(设计)

解决复杂问题的有效方法

  • 将一个总问题表达为若干个小问题组成的形式
  • 使用同样方法进一步分解小问题
  • 直至,小问题可以用计算机简单明了的解决

2.自底向上(执行)

逐步组建复杂系统的有效测试方法

  • 分单元测试,逐步组装
  • 按照自顶向下相反的路径操作
  • 直至,系统各部分以组装的思路都经过测试和验证

分类:

后端

标签:

后端

作者介绍

Wyl
V1

厦门大学