mysql视频 Springboot 分布式机器 定义键盘快捷键 Jenkins HTTP请求 matlab向上取整 axios rss formvalidator.js 十大erp系统 建站一条龙 cos图像和sin图像 python生成多个随机数 python新手教程 python中import用法 javascanner java运行环境 冬青鼠 sql行转列 修改tomcat端口 苹果手机老是自动重启 战地联盟辅助 网络工程师教程 页面刷新 视频加文字用什么软件 3d看图软件 wegame更新失败 js刷新当前页 只狼全鬼佛 0x000007a cdlinux教程 剑灵龙骨卷轴 免费ftp空间 js刷新当前页面 数据库编程软件 top命令详解 机箱最佳风道图 ps怎么复制粘贴 js观察者模式
当前位置: 首页 > 学习教程  > python

天池龙珠训练营Python_Task1:从变量到异常处理

2021/2/8 12:35:24 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

1.简介 Python是一种通用编程语言,其在和学计算和机器学习领域具有广泛的应用。发果我们打算利用Python来执行机器学习,那么对Python有一些基本的了解就是至关重要的。本Python入门系列体验就是为这样的初学者精心准备的。 本实验包括以下内容&#xf…

1.简介

Python是一种通用编程语言,其在和学计算和机器学习领域具有广泛的应用。发果我们打算利用Python来执行机器学习,那么对Python有一些基本的了解就是至关重要的。本Python入门系列体验就是为这样的初学者精心准备的。

本实验包括以下内容:

2.变量、运算符与数据类型

  • 1.注释
  • 2.运算符
  • 3.变量和赋值
  • 4.数据类型与转换
  • 5.print() 函数

3.位运算

  • 1.原码、反码和补码
  • 2.按位非操作 ~
  • 3.按位与操作 &
  • 4.按位或操作 |
  • 5.按位异或操作 ^
  • 按位左移操作 <<
  • 按位右移操作 >>
  • 利用位运算实现快速计算
  • 利用位运算实现整数集合

4.条件语句

  • 1.if 语句
  • 2.if - else 语句
  • 3.if - elif - else 语句
  • 4.assert 关键词

5.循环语句

  • while 循环
  • while - else 循环
  • for 循环
  • for - else 循环
  • range() 函数
  • enumerate()函数
  • break 语句
  • continue 语句
  • pass 语句
  • 推导式

6.异常处理

  • Python 标准异常总结
  • Python 标准警告总结
  • try - except 语句
  • try - except - finally 语句
  • try - except - else 语句
  • raise语句


2.变量、运算符与数据类型

1.注释

#后的内容是对代码的注释

例单行注释

 

#这是一个注释

print('Hellow world')

例:多行注释 ''' 注释内容''' 或者 """注释内容“”“

 

'''

这是多行注释内容

这是多行注释内容

这是多行注释内容

'''

print(“Hello”)

2. 运算符

算术运算符

操作符

名称

示例

+

1+1

-

2-1

*

3*4

/

3/4

//

整除(地板除)

3//4

%

取余

3%4

**

2**3

运算示例

print(1 + 1) # 2

print(2 - 1) # 1

print(3 * 4) # 12

print(3 / 4) # 0.75

print(3 // 4) # 0

print(3 % 4) # 3

print(2 ** 3) # 8

比较运算符:运算结果只有True, False 两个值

操作符

名称

示例

>

大于

2>1

>=

大于等于

2>=4

<

小于

1<2

<=

小于等于

5<=4

==/

等于

3==4

!=

**

不等于

3​!=5

关系运算示例

print(2 > 1) # True

print(2 >= 4) # False

print(1 < 2) # True

print(5 <= 2) # False

print(3 == 4) # False

print(3 != 5) # True

逻辑运算符:

操作符

名称

示例

And

(3>2)and (3<5)

or

(1>3) or (9<2)

not

not(2>1)

位运算符:

操作符

名称

示例

~

按位取反

~4

&

按位与

4&5

|

按位或

|

^

按位异或

4^5

<<

左移

4<<2

>>

右移

4>>2

运算示例 :

print(bin(4)) # 0b100

print(bin(5)) # 0b101

print(bin(~4), ~4) # -0b101 -5

print(bin(4 & 5), 4 & 5) # 0b100 4

print(bin(4 | 5), 4 | 5) # 0b101 5

print(bin(4 ^ 5), 4 ^ 5) # 0b1 1

print(bin(4 << 2), 4 << 2) # 0b10000 16

print(bin(4 >> 2), 4 >> 2) # 0b1 1

三元运算符

x,y=4,5 

If x<y:

small=x

Else:

small=y

print(small)

4

使用三元运算符,可以用一条语句来完成以上条件判断和赋值操作

 

x,y=4,5

small=x if x<y else y

print(small)

其他运算符

运算符

名称

示例

In

存在

'A' in ['A','B','C']

Not in

不存在

'h' not in ['A','B','C']

Is

"hellow" is "hello"

Not is

不是

"hello" is not "hello"

 

letters=['A','B','C']

if 'A' in letters:

print('A'+'exists')

if 'h' in letters:

print('h'+' not exists')

示例:比较两个变量均指向不可变类型

 

a​="hello"

b="hello"

print(a is b ,a ==b) # True True

print(a is not b, a !=b) # False Flase

示例:比较两个变量均指向可变类型

 

a=["hello"]

b=["hello"]

print(a is b, a==b) #False True

print(a is not b, a !=b)# True False

注意:

  • is,is not 对比的是两个变量的内存地址
  • ==,!=对比的是两个变量的值
  • 比较的两个变量,指向的都是地址不可变的类型(str等),那么is, is not 和==,!=是完全等价的。
  • 对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是区别的。

运算符的优先级

大致:单目,算术,位,关系,逻辑,不背诵,使用时查文档

3变量和赋值

变量在使用前,必须要赋值

变量名命名可由字母、数字、下划线组合,但变量名不能以数字头

Python变量名的大小写敏感,foo 与Foo 是两个不同的变量

示例 :

 

tea="毛峰"

print(tea)

num1=56

num2=32

num3=num1+num2

print(num3)

s1="小明学编程"

s2="小琴学编程"

wes=s1+','+s1

pirnt(wes) #小明学编程,小琴学编程

set_1={"爱上","Python","编程"}

print(set_1.pop) #欢迎

4.数据类型与转换

类型

名称

示例

Int

整型

895

Float

浮点型

3.01445

bool

布尔型

True,False

整型<class 'int'>

 

a=1031

print(a,type(a))

通过print可看出a的值,以及类 (class) 是int。Python 里面万物皆对象(object),整型也不例外,只要是对象,就有相应的属性(attributes)和方法(methods)

 

b=dir(int)

print(b) #把整型对象的属性与方法全部打印出来。

例:找出一个整数的二进制表示,并返回其长度。

 

a=1030

print(bin(a)) #00b100000001111

print (a.bin_length()) #11 这里使用bin_length()这一方法

 

#查看浮点型数据类型

print(1,type(2.33))

#2.33 <class 'float'>

例:使用decimal包中的Decimal对象和getcontext()方法来实现。

 

import decimal

from deciaml import Decimal

????没完成

3.位运算

1.原码、反码和补码

2.按位运算

3.利用位运算实现快速计算

4.利用位运算实现整数集合

4.条件语句

1.if 语句 (是执行还是不执行)

格式

 

if expression:

expr_true_suite

只有expression的值 为true时,expr_true_suite才会被执行,否则将继续执行紧跟在该代码块后面的语句。

expresion可以由布尔操作,and ,or 和not 实现多重条件判断的表达式。

 

#例

if 2>1 and not 2 >3:

print('Correct Judgement!') #输出Correrct Judgement!

2.if - else 语句(二选一执行)

语法格式:

 

if expression:

expr_true_suite

else:

expr_false_suite

Expression值为真,执行expr_true_suite,否则为假,执行expr_false_suite .

 

temp=input("猜猜小姐姐想的是哪个数字?")

guess=int(temp) #input 的返回数据类型为str,这里做数据类型的转换

if guess==666:

print("你太了解小姐姐的心思了!")

else:

print("铺错了,现在心里想的是666!")

print("游戏结束,不玩儿啦!")

if与else 后面的代码,只能二选一个执行,选谁执行,由if 后的表达式值是true还是false 来决定.

If-else 的选择结构可以进行嵌套,可以在if-else各自后面的语句又可是if 或 if-else语句,从而构成多层次的选择控制执行结构。

例:

 

hi=6

if hi>2:

if hi>7:

print("好棒!好棒!")

else:

print("切~") #无输出

例:

 

temp=input("猜猜小姐姐想的是哪个数字?")

guess=int(temp) #input 的返回数据类型为str,这里做数据类型的转换

if guess>8:

print("大了,大了")

else:

if guess==8:

print("你太了解小姐姐的心思了!")

print("猜对了也没奖励!")

else:

print("铺错了,现在心里想的是666!")

print("游戏结束,不玩儿啦!")

#这里:外层的if-else 语句的else控制的子句嵌入了一个if-elsey语句。

3.if -elif -else 语句

语法格式:

 

if expression1:

expr1_true_suite

elif expression2:

expr2_true_suite

.

.

elif expressionN:

exprN_true_suite

else:

expr_false_suite

  • elif 语句即为 else if,用来检查多个表达式是否为真,并在为真时执行特定代码块中的代码。
 

temp = input('请输入成绩:')

source = int(temp)

if 100 >= source >= 90:

print('A')

elif 90 > source >= 80:

print('B')

elif 80 > source >= 60:

print('C')

elif 60 > source >= 0:

print('D')

else:

print('输入错误!')

输入成绩:99

A

这里要注意写程序时条件判断的冗余。

4.assert 关键词

Assert 称之为“断言”,当这个关键词后边的条件为False时,程序自动崩溃并抛出AssertionError的异常。

例:在进行单元测试时,可以用来在程序中置入检查点,只有条件为 True 才能让程序正常工作。

 

assert 7 > 3 #这个条件满足时才执行

print('1')

print('2')

# 1 2

##修改为以下面的代码

assert 7 > 9 #这个条件满足时才执行

print('1')

print('2') #程序给出异常AssertionError

5.循环语句

1.while 循环

2.while -else 循环

3.for 循环

4.for -else 循环

#在java与C中没看到for-else 函数

格式:

for 迭代变量 in 可迭代对象:

代码块

   else:

 代码块

例:列10-20之间合数与质数。对于合数定出其因数的乘积。

 

for num in range(10,20):

for i in range(2,num):

if num%i==0: #确定第一个因子

j=num/i #计算第二个因子

print('%d 等于%d *%d ' %(num,i,j)

else: #循环else部分

print(num,'是一个质数')

5.range()函数

格式: range([start,] stop[, step=1])

Built-in function 有三个参数,其中用中括号括起来的两个表示可选.

step:是默认步长.

Range: 生成从[start stop)的数值序列

6.enumerate ()函数

格式: enumrate(sequece,[start=0])

Sequence: 一个序列、迭代器或其他支持迭代对象

Start: 下标起始位置

返回enumearte(枚举)对象

例:enumerate (seasons)返回了 seasons列表中的所有元素,和元素相应的索引值(从0开始)。

 

seasons=['Spring','Summer','Fall','Winter']

lst=list(enumerate(seasons)) #用enumerate()函数获得列表中的元素

print(lst)

lst=list(enumerate(seasons, start=1)) #使用enumerate函数获得列表中的元素,并且设置起始值为1

print(lst)

例:enumerate ()与for 一起使用

格式:for i a in enumerate (A)

do something with a

例如:字符串组合

 

#第一种方式用for 循环

languages=['Python', 'R', 'Matlab', 'C++']

for language in languages:

print('I love',language)

print('Done!')

#第二种方用 enumerate()函数来完成。.

languages=['Python', 'R', 'Matlab', 'C++']

for language in enumerate(languages):

#用下面的这种方式也可以

#for i,language in enumerate(languages,2): #2的解释

print("I love",language)

I love Python

I love R

I love Matlab

I love C++

Done!

2 I love Python

3 I love R

4 I love Matlab

5 I love C++

Done!


7.break语句

中断循环执行

例:

 

import random

secret=random.randit(1,10) #[1,10]之间的随机数

while True:

temp=input("猜一猜 小姐姐想的是哪个数字?")

guess=int(temp)

if guess>secret:

print("大了")

else:

if guess==screet:

print("你猜中了")

print("猜对也没有奖励!")

break

else:

print("小了")

print("游戏结束了")

8.Continue 语句

continue终止本轮循环并开始下一轮循环。

 

#如筛选出1-10中的奇数

for i in range(10):

if i%2!=0:

print(i)

continue

9.pass语句

pass 语句的意思是“不做任何事”,如果你在需要有语句的地方不写任何语句,那么解释器会提示出错,而 pass 语句就是用来解决这些问题的。

在编写程序时,可以用pass语句来替代还未完成的代码

 

def a_func():

# 不写pass 会出错 SyntaxError: unexpected EOF while parsing

#改写在加上pass的空函数

def a_func():

pass

#pass是空语句,不做任何操作,只起到占位的作用,其作用是为了保持程序结构的完整性。尽管pass语句不做任何操作,但如果暂时不确定要在一个位置放上什么样的代码,可以先放置一个pass语句,让代码可以正常运行

10.推导式

列表推导式:利用列表,for , if-else,in 语句组合在推导式解决复杂问题

格式:[ expr for value in collection [if condition] ]

例:计算X列表中的元素,全部*2 构成y列表

 

x=[-4,-2,0,2,4]

y=[a*2 for a in x] #X列表中的元素,全部*2 构成y列表

print(y)

[-8, -4, 0, 4, 8]

例:计算1-9 每个整数的平方

 

x=[i**2 for i in range(1,10)] #1-9 每个整数的平方

print(x)

[1, 4, 9, 16, 25, 36, 49, 64, 81]

例:1-100中除的通3,但除不通2的数

 

x=[i for i in range(100) if (i%2)!=0 and (i%3)==0]

print(x)

#[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]

例:形成数对列表(x,y) x in (0,3),y in (0,3),对两个变量进行了范围说明分别是

for i in range(0,3)

for j in range(0,3)

 

a=[(i,j) for i in range(0,3) for j in range(0,3)]

print(a)

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

例 :类似,得到元素为列表的列表

 

a=[[i,j] for i in range(0,3) for j in range(0,3)]

print(a)

#[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

例:对参数进行大小限定,其中i<1, j>1。两个参数进行限定范围,并加上条件筛选。

 

a=[(i,j) for i in range(0,3) if i<1 for j in range(0,3) if j>1]

print(a)

#a=[(i,j) for i in range(0,3) if i<1 for j in range(0,3) if j>1]

print(a)

元组推导式

格式:(expr for value in collection [if condition])

例:

 

a=(x for x in range(10)) #得到0-9之间的整数构成的元组

print(a) #这里会出错,#怎么解释???

<generator object <genexpr> at 0x000002D23AAB2938>

修改为:

 

a=(x for x in range(10))

print(tuple(a)) #输出(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

字典推导式

格式{key_expr:value_expr for value in collection [if condition]}

 

b={i:i%2==0 for i in range(10) if i %3==0} # : --字典

print (b)

#{0: True, 3: False, 6: True, 9: False}

#对字典的键进行了推导设置,对值没有做处理。

集合推导式

{ expr for value in collection [ if condition ] }

 

c={i for i in [1,2,3,4,5,5,6,4,3,2,1]}

#c={i: for i in [1,2,3,4,5,5,6,4,3,2,1]} 也可以

print(c)

#{1, 2, 3, 4, 5, 6}

其它

next ( iterator [ , default ] ) Return the next item from the iterator. If default is given

And the iterator is exhausted, it is returned instead of raising StopIteration.

返回迭代器中下一项,默认返回迭代器中所有项,

 

e=(i for i in range(10)) #这里是推导式建立了一个元组print(tuple(e))可以将数据全部输出

print(e) #<generator object <genexpr> at 0x000002D23AA6F468>

#修改为

print (next(e)) #0 解释:next()得到迭代器中的一项,指针指向下一项

print(next(e)) #1

#下方采用迭代器将e中的数据全部读出

for each in e:

print(each,end='')

'''

输出结果为

<generator object <genexpr> at 0x000002D23A667BF8>

0

1

23456789

'''

例:求一个列表的和,分别以列表和元素的行式用推导式实现

 

s = sum([i for i in range(101)])

print(s) # 5050

s = sum((i for i in range(101)))

print(s) # 5050

6.异常处理

异常就是运行期检测到的错误。计算机语言针对可能出现的错定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。

1.Python 标准异常总结

  • BaseException:所有异常的基类
  • Exception:常规异常的基类
  • StandrdError:所有的内建标准异常的基类
  • ArithmeticErro:所有数值计算异常的基类
  • FloatingPointError:浮点计算异常
  • OverflowError:数值运算超出最大限制
  • ZeroDivisionError:除数为零
  • AssertionError:断言语句(assert)失败
  • AttributeError:尝试访问未知的对象属性
  • EOFError:没有内建输入,到达EOF标记
  • EnvironmnetError:操作系统异常的基类
  • IOError:输入/输出操作失败
  • OSError:操作系统产生的异常(如打开一个不存在的文件)
  • WindowsError:系统调用失败
  • ImportError:导入模块失败的时侯
  • keyboardInterrupt:用户中断执行
  • LookupError:无效数据查询的基类
  • IndexError:索引超出序列的范围
  • KeyError:找一个不存在的关键字
  • MemoryError:内在溢出(可通过删除对象释放内存)
  • NameError:尝试访问一个不存在的变量
  • UnboundLocalError:访问未初始化的本地变量
  • ReferenceError:弱引用试图访问已经垃圾回收了的对象
  • RuntimeError:一般的运行时异常
  • NotImplementedError:尚未实现的方法
  • SyntaxErro:语法错误导致的异常
  • IndentationError:缩进错误导致的异常
  • TabError:Tab和空格混用
  • SyetemError:一般的解释器系统异常
  • TypeError:不同类型间的无效操作
  • ValueError:传入无效的参数
  • UnicodeError:Unicode相关的异常
  • UnicodeDecodeError:Unicode解码时的异常
  • UnicodeEncodeError: Unicode编码错误导致的异常
  • UnicodeTranslateError:Unicode转换错误导致的异常

Python异常体系的内部关系如图所示

 

2.位运算标准警告总结

  • Warning:警告基类
  • DeprecationWarning:关于被弃用的特征的警告
  • FutureWarning:关于构造将来语义会有改变的警告
  • UserWarning:用户代码生成的警告
  • PendingDeprecationWarning:关于特性将会被废弃的警告
  • RuntimeWarning:可疑的运行时行为警告
  • SyntaxWarning:可疑语法的警告
  • ImportWarning:用于在导入模块过程中触发的警告
  • UnicodeWarning:与Unicode相关的警告
  • BytesWarning:与字节或字节码相关的警告
  • Resource:Warning:与资源使用相关的警告

3.try-except 语句

语法:

Try:

检测范围

Except Exception[as reason]:

出现异常后的处理代码

工作步骤:

  • 首先,执行try子句(try 与except之间的代码)
  • 如果没有异常发生,忽略except子句,try 子句执行后结束。
  • 如try后检测的代码发生异常,那么这部分语句将被忽略 。而且如异常类型和except之后的名称相符,那么except后的子句将被执行。
  • 如果一个异常没有任何一个except匹配 ,那么这个异常将会传递给上层的try中。 ????
 

#1-打开文件出错

try:

f=open('test.text')

print(f.read())

f.close()

excpet OSError:

print('打开文件出错')

# 运行结果

# 打开文件出错

# 原因是:[Errno 2] No such file or directory: 'test.txt'

 

#2-给出具体的出错描述

try:

f=open('test.text')

print(f.read())

f.close()

excpet OSError as error:

print('打开文件出错的原因是: '+str(error)) #将错误描述输出

# 运行结果

# 打开文件出错的原因是:[Errno 2] No such file or directory: 'test.txt'

#例2-try语句包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支被执行。

 

try:

int("abc")

s=1+'1'

f=open('text.txt')

print(f.read())

f.close()

except OSError as error:

print('打开文件出错\n原因是:'+str(error))

except TypeError as error:

print('类型出错\n原因是:'+str(error))

except ValueError as error:

print('数值出错\n原因是:'+str(error))

# 数值出错

# 原因是:invalid literal for int() with base 10: 'abc'

 

dict1={'a':1,'b':2,'v':22}

try:

x=dict1['y'] #在字典中是没有该项,出现查询错误

except LookupError:

print('查询错误')

except KeyError:

print('键错误')

else:

print(x)

#查询错误

Try-except-else 语句尝试在查询不存于dict中的键值对,会引发异常。该异常称为KeyError。 因为keyError是 LookupError的子类,且LookupError置于keyError之前【?】,所以程序优先执行该except代码块。所以,使用多个except代码块时,必须坚持对其进行规范排序,要从最针对性的异常到最通用的异常。

 

dict={'a':1,'b':2,'v':22}

try:

x=dict1['y']

except KeyError: #针对性的在前

print('键错误 ')

except LookupError:

print('键错误 ')

else:

print(x)

#运行:键错误

例:一个 except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组。

 

try:

S=1+'1'

int("abc")

f=open('test.txt')

print(f.read())

f.close()

except(OSError, TypeError,ValueError) as error: #多个异常同时处理

print('出错了!\n原因是:'+str(error))

#出错了!

#原因是:unsupported operand type(s) for +:'int' and 'str'

4.try_except -finally语句

try:

检测范围

Except Exception [as reason]:出现异常后的处理代码

finally:无论如何都会被执行的代码

不管try子句里面有没有发生异常,finally 子句都会执行.

例:如果一个异常在try子句里被抛出,而又没有任何的except把它截住,那么这个异常会在finally 子句执行后被抛出。

 

def divide(x, y):

try:

result = x / y

print("result is", result)

except ZeroDivisionError:

print("division by zero!")

finally:

print("executing finally clause")

divide(2, 1)

# result is 2.0

# executing finally clause

divide(2, 0)

# division by zero!

# executing finally clause

divide("2", "1")

# executing finally clause

# TypeError: unsupported operand type(s) for /: 'str' and 'str'

5.try-except-else语句

try检测的子句没有发生异常,Python将执行elsey语句后的语句

 

try:

检测范围

except: #这里没有任何异常类型,不是一个很好的方式,不能识别出具体异常信息,因为将捕获所有的异常。

出现异常后的处理代码

else:

如果没有异常执行这块代码

try:

检测范围

except(Exception1[, Exception2[,...ExceptionN]]]):

发生以上多个异常中的一个,执行这块代码

else:

如果没有异常执行这块代码

例:

 

try:

fh = open("testfile.txt","w")

fh.write("这是一个测试文件,用于测试异常!!")

except IOError:

print("Error:没有找到文件或读取文件失败")

else:

print("内容写入文件成功")

fh.close()

#

注意:else语句的存在必须以except语句的存在为前提,在没有except语句的try语句中使用else语句,会引发语法错误。

6.Raise 语句

Python 使用raise语句抛出一个指定的异常。

 

try:

raise NameError('HiThere')

except NameError:

print('An exception flew by!')

#An exception flew by !


本文链接: http://www.dtmao.cc/news_show_2000340.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?