python学习

PYTHON学习

目录)

一级目录

二级目录

三级目录

bin的用法

Python中的bin的用法是将输入的十进制数转换成二进制的数
如:

print(bin(4))   # 0b100

运算符—is & not is

is比较的是两个变量的内存地址,not is同理
比如:

a=["hello"]
b=["hello"]
print(a is b)  #False

但是对于字符串变量(str)来说,它两没有区别,因为字符串是地址不可变型,此时is 和 not is等同于逻辑运算符 == 和!=
比如:

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

List—pop函数

列表的声明为

a=['1','2','3']

pop函数的作用是移除列表中的一个元素(默认是最后一个元素)
比如:

a=['1','2','3']
print(a.pop())#['3']
print(a)	     #['1','2']

当然也可以根据索引来指定删除(索引大小不可超过列表长度)

查看对象中的类—type()

a=1
print(type(a)) #int

python中查看对象的方法是dir(),比如:

b=dir(int)
print(b)

还有一种函数可以查看类型:bitlength()

a=1031
print(a.bitlength())

getcontext().prec用来调整精度,比如:

decimal.getcontext().prec=4
print(Decimal(1)/Decimal(3))

bool型变量

bool变量在打印输出时,会以整形输出,比如:

print(True + True) #2

bool变量在赋值的时候可以以bool(X)来进行,比如:

a = bool(1)     #a=True
a = bool(0)     #a=False

在使用上述方法进行bool型变量的赋值的时候,如果是容器变量,则当容器变量为空时,认为赋值False,比如:

a = bool([])  #a=False
a = bool([0]) #a=True

变量转换

转换方法是:

int( x , base=10 )
str( object= ' ' )
float( x )

print函数

print基本格式

python中的print函数参数为:

print( *object, seq = ' ' , end= '\n', file = sys.stdout, flush = False )

上述中的参数含义:
一、seq是多个参数输出时,中间的分隔符
二、end是在输出结束时的字符,默认时换行符 ‘\n’
三、file是定义流输出的文件,可以是标准的输出sys.stdout,也可以是其他的
四、flush是立即将内容输出到流文件,不做缓存

print的格式化输出

最常见的一种方法是:

s = 'Hello'
x = len(s)
print(" the length of %s is %d"(s,x))

在上面的表达式中,
(1)%表示标记转换字符的开始
(2)转换标志:-表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充
(3)最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出
(4)点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将从元组中读出

常见的字符串格式化转换类型

项目Value
转换类型含义
d,i带符号的十进制整数
o不带符号的八进制
u不带符号的十进制
x不带符号的十六进制(小写)
X不带符号的十六进制(大写)
e科学计数法表示的浮点数(小写)
E科学计数法表示的浮点数(大写)
f,F十进制浮点数
g如果指数大于-4或者小于精度值则和e相同,其他情况和f相同
G如果指数大于-4或者小于精度值则和E相同,其他情况和F相同
C单字符(接受整数或者单字符字符串)
r字符串(使用repr转换任意python对象)
s字符串(使用str转换任意python对象)

python 中的负数的补码

前面所述,bin的作用是输出一个数的二进制表达式,如,bin(4)=0b100。对于负数的bin输出,bin一个负数的输出是数本身的二进制码的负数,如,bin(-4)=-0b100。
所以如果想获取负数的补码,则需要手动将其和0xffffffff进行按位与,然后交给bin进行输出。

条件语句,if-elif-else

在python中,由于没有’{}‘,所以在每次判断时,使用的是缩进,比如:

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('输入错误!')

注意此处,每一个后面都加入了‘:’符号

assert语句

assert通过判断后面的表达式是否为True,如果为真,不执行assert;如果为假,assert就会抛出异常,异常类型为AssertionError,在后面异常处理部分中的常见异常表会列举出这种类型的异常。
assert用法见下:

assert 4 > 7

# AssertionError

循环语句

基本循环语句 While

循环语句的基本格式:

while 布尔表达式:
    代码块

while-else

在python中,while可以搭配else使用,比如:

count = 0
while count < 5:
    print("%d is  less than 5" % count)
    count = count + 1
else:
    print("%d is not less than 5" % count)

for循环和for-else

for循环比如:

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for key, value in dic.items():
    print(key, value, sep=':', end=' ')

for-else循环

for num in range(10, 20):  # 迭代 1020 之间的数字
    for i in range(2, num):  # 根据因子迭代
        if num % i == 0:  # 确定第一个因子
            j = num / i  # 计算第二个因子
            print('%d 等于 %d * %d' % (num, i, j))
            break  # 跳出当前循环
    else:  # 循环的 else 部分
        print(num, '是一个质数')

range的用法

上述循环中的range函数作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,该序列包含start的值但不包含stop的值

range([start,] stop[, step=1])

enumerate()函数

enumerate(sequence, [start=0])
  • sequence:一个序列、迭代器或其他支持迭代对象。
  • start:下标起始位置。
  • 返回 enumerate(枚举) 对象
    可以说,enumerate函数会将sequence序列进行遍历并且进行序列标号,标号的起始位置是start参数设置的。
languages = ['Python', 'R', 'Matlab', 'C++']
for language in languages:
    print('I love', language)
print('Done!')
# I love Python
# I love R
# I love Matlab
# I love C++
# Done!


for i, language in enumerate(languages, 2):
    print(i, 'I love', language)
print('Done!')
# 2 I love Python
# 3 I love R
# 4 I love Matlab
# 5 I love C++
# Done!

break,continue,pass用法

break,continue的用法同其他语言里一样,在python中,pass的作用是保证程序结构的完整性,当在不确定该位置放置啥样的代码块的时候,可以用pass语句跳过。比如:

def a_func():
    pass

此时这个定义的函数 a_func()将不会做出任何操作

推导式

列表推导式

x = [-4, -2, 0, 2, 4]
y = [a * 2 for a in x]
print(y)
# [-8, -4, 0, 4, 8]

a取值是x中的各个指,然后乘以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]


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)]


x = [[i, j] for i in range(0, 3) for j in range(0, 3)]
print(x)
# [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

x[0][0] = 10
print(x)
# [[10, 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) if i < 1 for j in range(0, 3) if j > 1]
print(a)

# [(0, 2)]

元组推导式

和列表推导式相区别,当方括号变成⚪括弧时,推导式变成元组推导式,如,

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

# <generator object <genexpr> at 0x0000025BE511CC48>

print(tuple(a))

# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

如果上面的是方括弧,第一个输出就是[0 1 2 3 4 5 6 7 8 9]

字典推导式

b = {i: i % 2 == 0 for i in range(10) if i % 3 == 0}
print(b)
# {0: True, 3: False, 6: True, 9: False}

字典推导式的结构是:

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

集合推导式

同上述,存在集合推导式,如,

{ expr for value in collection [if condition] }

比如,

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

区别在于是大括弧

注意:无论是元组推导式还是列表推导式,使用如下类型的函数时,返回的结果是相同的,例如,

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

python中的异常

python中标准异常:

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

异常体系内部有层次关系,Python异常体系中的部分关系如下所示:

python中标准警告

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

try-except语句

try:
    检测范围
except Exception[as reason]:
    出现异常后的处理代码

try 语句按照如下方式工作:

  • 首先,执行try子句(在关键字try和关键字except之间的语句)
  • 如果没有异常发生,忽略except子句,try子句执行后结束。
  • 如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try - except语句之后的代码。
  • 如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
    注意:
  • 一个try语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
  • 使用多个except代码块时,必须坚持对其规范排序,要从最具针对性的异常到最通用的异常。
  • 一个 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'

try - except - finally 语句

基本格式:
try:
    检测范围
except Exception[as reason]:
    出现异常后的处理代码
finally:
    无论如何都会被执行的代码

不管`try`子句里面有没有发生异常,`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'

try - except - else 语句

基本格式:

try:
    检测范围
except:
    出现异常后的处理代码
else:
    如果没有异常执行这块代码

比如:

try:
    fh = open("testfile.txt", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print("Error: 没有找到文件或读取文件失败")
else:
    print("内容写入文件成功")
    fh.close()

#内容写入文件成功

raise语句

raise是用于抛出指定异常,比如:


try:
    raise NameError('HiThere')
except NameError:
    print('An exception flew by!')
    
# An exception flew by!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值