task1 Python入门(上)

一、变量、运算符与数据类型

1. 运算符

(1)算术运算符
加(+),减(-),乘(*),除(/),整除(//),取余(%),幂(**)

(2) 比较运算符
大于(>),大于等于(>=),小于(<),小于等于(<=),
等于(==),不等于(!=)

(3) 逻辑运算符
与(and),或(or),非(not)

(4)位运算符

操作符名称事例
~按位取反~4
&按位与4&5
·按位或4`5
^按位异或4^5
<<左移4<<2
>>右移4>>2

事例代码:

print(~4)
print(4 & 5)
print(4 | 5)
print(4 ^ 5)
print(4 << 2)
print(4 >> 2)

结果:

-5
4
5
1
16
1
[Finished in 0.2s]

(5) 三元运算符
使用 if else 实现三目运算符(条件运算符)的格式如下:

exp1 if contion else exp2

condition 是判断条件,exp1 和 exp2 是两个表达式。如果 condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果。
例如:比较两个数大小,并输出小的数:

x, y = 4, 5
print(x if x < y else y)

结果:

4
[Finished in 0.1s]

(6) 其他运算符
存在(in),不存在(not in),是(is),不是(not is)
注意:is, is not 对比的是两个变量的内存地址;==,和!= 对比的是两个变量的值。当比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。

a = "hello"
b = "hello"
print(a is b, a == b)
print(a is not b, a != b)
a = ["hello"]
b = ["hello"]
print(a is b, a == b)
print(a is not b, a != b)

运行结果:

True True
False False
False True
True False
[Finished in 0.2s]

2. 变量和赋值

python采用基于值的内存管理方式。赋值语句的执行过程是:首先把等号右侧表达式的值计算出来,然后在内存中寻找一个位置报纸存放进去,最后创建变量并指向这个内存地址。python中的变量并不直接存储值,而是存储了值的内存地址或者引用,这也是在python中变量类型可以随时改变的原因。

3. 数据类型与转换

type():可以查看数据类型
bin():把数字转换成二进制
bit_length():该方法计算二进制数的长度
有时候我们想保留浮点型的小数点后 n 位。可以用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现。
【例子】getcontext() 显示了 Decimal 对象的默认精度值是 28 位 (prec=28)。

import decimal
from decimal import Decimal
a = Decimal(1) / Decimal(3)
print(a)

结果:

0.3333333333333333333333333333
[Finished in 0.2s]

【例子】使 1/3 保留 4 位,用 getcontext().prec 来调整精度。

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

结果:

0.3333
[Finished in 0.1s]

除了直接给变量赋值 True 和 False,还可以用 bool(X) 来创建变量,其中 X 可以是基本类型:整型、浮点型、布尔型容器类型:字符串、元组、列表、字典和集合
【例子】bool 作用在基本类型变量:X 只要不是整型 0、浮点型 0.0,bool(X) 就是 True,其余就是 False。bool 作用在容器类型变量:X 只要不是空的变量,bool(X) 就是 True,其余就是 False。

print(type(0), bool(0), bool(1))
print(type(10.31), bool(0.00), bool(10.31))
print(type(True), bool(False), bool(True))
print(type(''), bool(''), bool('python'))
print(type(()), bool(()), bool((10,)))
print(type([]), bool([]), bool([1, 2]))
print(type({}), bool({}), bool({'a': 1, 'b': 2}))
print(type(set()), bool(set()), bool({1, 2}))

结果:

<class 'int'> False True
<class 'float'> False True
<class 'bool'> False True
<class 'str'> False True
<class 'tuple'> False True
<class 'list'> False True
<class 'dict'> False True
<class 'set'> False True

bool 作用在容器类型变量:X 只要不是空的变量,bool(X) 就是 True,其余就是 False。
**对于数值变量,0, 0.0 都可认为是空的。
**对于容器变量,里面没元素就是空的。

4. print()函数

当没有参数时,每次输出后都会换行。每次输出结束都用end设置的参数&结尾,并没有默认换行。

shoplist = ['apple', 'mango', 'carrot', 'banana']
print("This is printed without 'end'and 'sep'.")
for item in shoplist:
    print(item)
print("This is printed with 'end='&''.")
for item in shoplist:
    print(item, end='&')
print('hello world')

结果:

This is printed without 'end'and 'sep'.
apple
mango
carrot
banana
This is printed with 'end='&''.
apple&mango&carrot&banana&hello world

item值与’another string’两个值之间用sep设置的参数&分割。由于end参数没有设置,因此默认是输出解释后换行,即end参数的默认值为\n。

shoplist = ['apple', 'mango', 'carrot', 'banana']
print("This is printed with 'sep='&''.")
for item in shoplist:
    print(item, 'another string', sep='&')

结果:

This is printed with 'sep='&''.
apple&another string
mango&another string
carrot&another string
banana&another string

二. 位运算

1.原码,反码和补码

二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。
原码:就是其二进制表示(注意,有一位符号位)。
反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数按位取反)。
补码:正数的补码就是原码,负数的补码是反码+1。

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

通过 “<<”和“>>”快速计算2的倍数问题。

print(3<<1)  #n << 1 -> 计算 n*2
print(4>>1)  #n >> 1 -> 计算 n/2,负奇数的运算不可用
print(3<<2)  #n << m -> 计算 n*(2^m)
print(8>>2)  #n >> m -> 计算 n/(2^m)
print(1<<3)  #1 << n -> 2^n

结果:

6
2
12
2
8

三.条件语句

1. if-elif-else语句

if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
.
.
elif expressionN:
exprN_true_suite
else:
expr_false_suiteel

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

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

结果:

C
[Finished in 0.1s]

2. assert语句

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

my_list = ['lsgogroup']
my_list.pop(0)#op() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
assert len(my_list) > 0

点击运行,系统会报错。

四.循环语句

1. while - else 循环

while 布尔表达式:
    代码块
else:
    代码块

当while循环正常执行完的情况下,执行else输出,如果while循环中执行了跳出循环的语句,比如 break,将不执行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)
#用break中间跳出循环
count = 0
while count < 5:
    print("%d is  less than 5" % count)
    count = 6
    break
else:
    print("%d is not less than 5" % count)

结果:

0 is  less than 5
1 is  less than 5
2 is  less than 5
3 is  less than 5
4 is  less than 5
5 is not less than 5
0 is  less than 5
[Finished in 0.1s]

2. for 循环

for循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple等,也可以遍历任何可迭代对象,如dict。

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

每次循环,迭代变量被设置为可迭代对象的当前元素,提供给代码块使用。

3. for - else 循环

for 迭代变量 in 可迭代对象:
    代码块
else:
    代码块

当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容,与while - else语句一样。

for num in range(10, 20):  # 迭代 10 到 20 之间的数字
    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, '是一个质数')

结果:

10 等于 2 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是一个质数
18 等于 2 * 9
19 是一个质数
[Finished in 0.1s]

4. enumerate() 函数

enumerate(sequence, [start=0])

sequence:一个序列、迭代器或其他支持迭代对象。
start:下标起始位置。
返回 enumerate(枚举) 对象
【例子】

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
lst = list(enumerate(seasons))
print(lst)
lst = list(enumerate(seasons, start=1))  # 下标从 1 开始
print(lst)

结果:

[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
[Finished in 0.1s]

5. break ,continue语句

break语句可以跳出当前所在层的循环。
continue终止本轮循环并开始下一轮循环。

6. pass 语句

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

7. 推导式

列表推导式:
[ expr for value in collection [if condition] ]
expr:列表生成元素表达式,可以是有返回值的函数。
for value in collection:迭代collection将value传入expr表达式中。
if condition:根据条件过滤哪些值可以。

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]

元组推导式:
( expr for value in collection [if condition] )

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

结果:

<generator object <genexpr> at 0x0000014CEC2E28B8>
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)e}

字典推导式:
{ 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]}
print(c)

结果:

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

五.异常处理

1. 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:缩进错误导致的异常T
  • abError:Tab和空格混用
  • SystemError:一般的解释器系统异常
  • TypeError:不同类型间的无效操作
  • ValueError:传入无效的参数
  • UnicodeError:Unicode相关的异常
  • UnicodeDecodeError:Unicode解码时的异常
  • UnicodeEncodeError:Unicode编码错误导致的异常
  • UnicodeTranslateError:Unicode转换错误导致的异常

异常体系内部有层次关系,Python异常体系中的部分关系如下所示:在这里插入图片描述

2. python标准警告总结

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

3.try - except 语句

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

首先,执行try子句(在关键字try和关键字except之间的语句)如果没有异常发生,忽略except子句,try子句执行后结束。如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try - except语句之后的代码。如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。

try:
    f = open('test.txt')
    print(f.read())
    f.close()
except OSError:
    print('打开文件出错')

结果:

打开文件出错

4.try - except - finally 语句

try: 
	检测范围 
except Exception[as reason]: 
	出现异常后的处理代码
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
division by zero!
executing finally clause

5. try - except - else 语句

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

【例子】

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

结果:

内容写入文件成功

6. raise语句

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

try:
    raise NameError('HiThere')
except NameError:
    print('An exception flew by!')

结果:

An exception flew by!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值