Python 3级

一、进制转换

1.其他进制转10进制

  • 使用int(num,binary)函数
    • num 要转换的数字字符串
    • binary 按照何种进制来解析 取值:2 8 10 16 0(自动判断是何种进制)

2. 10进制数转其他进制

  • 转为2进制 bin()
  • 转为8进制 oct()
  • 转为16进制hex()

3.非10进制之间的转化

  • 思路:先用int(num,binary)函数转为10进制数,然后再转换为目标进制

  • 例如: 将0o56437转换为2进制数:

    bin(int('0o56437',8))

二、文件处理

文件处理的步骤一般如下:

  • 打开文件
  • 操作文件
  • 关闭文件

1.打开文件

使用open(name[, mode[, buffering]])方法打开文件,其参数说明如下:

  • name 文件的路径 可以是绝对路径,也可以是相对路径

  • mode mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

  • buffering:如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

    文件打开模式列表:

    [图片上传失败...(image-ae249-1629191567312)]

2.操作文件

file对象方法如下:

  • file.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。
  • file.readline():返回一行。
  • file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。
  • for line in f: print(line) :通过迭代器访问。
  • f.write("hello\n"):如果要写入字符串以外的数据,先将他转换为字符串。
  • f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的字节数)。
  • f.seek(偏移量,[起始位置]):用来移动文件指针。
    • 偏移量: 单位为字节,可正可负
    • 起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾

3.关闭文件

关闭文件 f.close()

4. 文件操作一般步骤

  • 一般步骤

    f = open('test.txt','r',encoding='utf-8') # 打开文件
    txt = f.read() # 操作文件
    f.close() # 关闭文件
    


  • 加强版(with关键字)

    with语句作用是简化文件操作的try...except...finally流程,不必显式的关闭文件

    with open('test.txt','r',encoding='utf-8') as f:
      txt = f.read()
    

5.一维数据的操作

什么是一维数据

答:由对等关系的有序或无序数据构成,采用线性方式(一条直线排开)组织。对等关系:这些数据平级关系(不是包含、从属关系)

一维数据的写入

思路:将列表中的一维数据先转化为字符串,再将字符串写入文件中。

data = ['上海','北京','重庆','天津']
# 写数据
with open('test.txt','w',encoding='utf-8') as f:
  # 将列表转化为字符串
  data = ','.join(data)
  # 写入文件
  f.write(data)

一维数据的读取

思路:打开文件,使用f.read()方法将文件中的内容读取成字符串,再将这个字符串按照‘,’分割成列表。

data = []
with open('test.txt','r',encoding='utf-8') as f:
  data_str = f.read() # 读取内容
  data = data_str.split(',') # 将内容以逗号分割

6.二维数据的操作

什么是二维数据?

答:由多个一维数据构成,是一维数据的组合形式。也称为表格数据,其中,表头是二维数据的一部分,也可以不作为其中的一部分。

二维数据的表示形式?

答:使用二维列表来表示二维数据、

姓名 年龄 性别 电话
孙悟空 500 18888888888
猪八戒 36 18877777777
沙和尚 28 18866666666
唐三藏 15 18855555555
白龙马 9 18844444444
白骨精 2000 18833333333

二维数据的写入

思路:将二维列表转化为储存字符串的一位列表,然后遍历列表,将每个字符串单独写到文件中的一行。

data = [
  ['孙悟空','500','男','18888888888'],
  ['猪八戒','36','男','18877777777'],
  ['沙和尚','28','男','18866666666'],
  ['唐三藏','15','男','18855555555'],
  ['白龙马','9','男','18844444444'],
  ['白骨精','2000','女','18833333333']
  ]
  
with open('test.csv','w',encoding='utf-8') as f:
  for item in data:
    f.write(','.join(item)+'\n')

二维数据的读取

思路:将所有数据先读取出来,然后按照换行分割,再将每个分割后的字符串按照逗号分割。

result = []
with open('test.csv','r',encoding='utf-8') as f:
  for i in f:
      result.append(i.strip('\n').split(','))
print(result)

三、异常处理

1.概念

python解释器检测到错误,触发异常(也允许程序员自己触发异常)。程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)。如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理。

python解释器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,谁会去用一个运行着突然就崩溃的软件。所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性。良好的容错能力,能够有效的提高用户体验,维持业务的稳定性。

程序运行中的异常可以分为两类:语法错误和逻辑错误。首先,我们必须知道,语法错误跟异常处理无关,所以我们在处理异常之前,必须避免语法上的错误。

2.异常种类

在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误。

常见异常:

AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x

IOError 输入/输出异常;基本上是无法打开文件

ImportError 无法引入模块或包;基本上是路径问题或名称错误

IndentationError 语法错误(的子类) ;代码没有正确对齐

IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]

KeyError 试图访问字典里不存在的键

KeyboardInterrupt Ctrl+C被按下

NameError 使用一个还未被赋予对象的变量

SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)

TypeError 传入对象类型与要求的不符合

UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它

ValueError 传入一个调用者不期望的值,即使值的类型是正确的

其他异常

ArithmeticError

AssertionError

AttributeError

BaseException

BufferError

BytesWarning

DeprecationWarning

EnvironmentError

EOFError

Exception

FloatingPointError

FutureWarning

GeneratorExit

ImportError

ImportWarning

IndentationError

IndexError

IOError

KeyboardInterrupt

KeyError

LookupError

MemoryError

NameError

NotImplementedError

OSError

OverflowError

PendingDeprecationWarning

ReferenceError

RuntimeError

RuntimeWarning

StandardError

StopIteration

SyntaxError

SyntaxWarning

SystemError

SystemExit

TabError

TypeError

UnboundLocalError

UnicodeDecodeError

UnicodeEncodeError

UnicodeError

UnicodeTranslateError

UnicodeWarning

UserWarning

ValueError

Warning

ZeroDivisionError

3.基本语法

try:
  语句...
  ...
except <异常名称(如果不写则捕获所有异常)>:
  处理异常语句...
  ...
else:
  没有发生异常,则执行的语句...
  ...
finally:
  无论有没有捕获到异常,都要执行的代码...
  ...

4.例子

inp1 = input('请输入一个数字:')
inp2 = input('请输入一个数字:')
try:
  sum_inp = int(inp1)+int(inp2)
  print('您输入的数字之和为:'+str(sum_inp))
except ValueError:
  print('您输入的内容不合法')
finally:
  print('这是finally语句')

四、常用内置函数

1.数学运算类

  • abs(n)函数

求一个数的绝对值。

abs(-68) # 输出68
  • divmod(n1,n2)

返回一个整除结果和取模结果的二元组。(先整除,后取模)

divmod(10,3) # 返回(3,1)
  • max(n)

n可以是一个字符串或列表或元组或集合或可变长参数,求他们当中的最大值。

max(1,5,8,9,7) # 返回9
max([1,6,9,8,7]) # 返回9
max('asdgasdey') # 返回y
  • min(n)

求最小值,用法和max一样

  • sum(*n)

n是一个可变长参数,传入数字可求他们的和。

sum(1,2,3,4,5,6) # 返回21
  • round(n1,n2)

将传入的浮点数n1,保留n2位小数。四舍五入

round(3.1415926,2) # 保留两位小数  返回3.14
round(3.1455926,2) # 保留两位小数  返回3.15
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,527评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,687评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,640评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,957评论 1 318
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,682评论 6 413
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 56,011评论 1 329
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 44,009评论 3 449
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,183评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,714评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,435评论 3 359
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,665评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,148评论 5 365
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,838评论 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,251评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,588评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,379评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,627评论 2 380

推荐阅读更多精彩内容