《Python3 从入门到实战》第二章Python基本运算(易忘知识点)

2.1 值、类型、对象

2.1.2 值和类型

type()可以查询一个值的数据类型。

2.1.2 对象

一个对象包含:值、数据类型和id。

可以用python内置函数id()来查询一个对象的id。

2.2 变量

2.2.1 什么是变量

变量是对象的引用。

True和False是python的bool(布尔)类型的两个值。

2.2.2 变量名和关键字

变量名只能包含字母、数字和下画线,且不能以数字开头。

python是动态类型语言。

2.3数据类型概述

python主要内在数据类型:数值(number)、字符串(str)、列表(list)、元组(turple)、集合(set)、字典(dict)。

2.3.1数值类型

int(整型)、float(浮点型)、complex(复数类型)、bool(布尔类型)。

浮点型的值小数点后的精度不超过15位,复数型的值总被写成x+yi形式。

2.3.3元组

元组不可修改,可以用下表运算符[]访问turple的元素。

只有一个元素的turple的最后必须加一个逗号,如(25,)表示一个turple,而(25)代表一个整数。

2.3.4 字符串 

1.字符串str

如果字符串的内容写在多行,则首尾分别要用三个单引号或双引号包围多行的字符序列。

str类型的对象不可修改。

2.转义字符

\'表示单引号字符

\\表示单个斜杠字符\

\t表示制表符

\n表示换行符

2.3.5集合

set是不包含重复元素的无序集合,用左右花括号{}包围。

list对象无法计算哈希值,所以不能作为集合的元素。

2.3.6字典

一个“键-值”对的无序集合。

以“键:值”的形式存储。

2.4类型转换和输入

2.4.1隐式类型转换

某些情况下,python会自动将一个类型转换为另外一个类型。

2.4.2显式类型转换

内置函数str()将数值类型(int、float、complex)的值转为字符串str类型。

int()不能将一个不合适格式的字符串转为int类型的值,如:a=int(1,000')。

2.4.3输入

input(promote='') 

promote是一个用于提示信息的字符串,如name=input('请输入你的用户名:')

2.5运算符和表达式

位运算符

对两个运算数的对应二进制位进行运算:

& 位与、| 位或、^ 异或

对一个运算数的二进制位进行运算:

~取反、<<左移位、>>右移位

二元位运算符的运算规则:

1.& 位与:只有p和q都是1时,p&q的结果才是1。

2.| 位或:只要p和q有一个是1,p|q的结果就是1。

3.^ 异或:当p和q不同(一个是1一个是0)时,p^ q的结果是1。

一元位运算符的运算规则:

1.~取反:将每个二进制取反(0变1,1变0),~x的结果相当于-x-1,如22的补是-23。

2.<<左移位:各二进制位全部左移若干位,高位丢弃,低位补0。

3.>>右移位:各二进制位全部右移若干位,无符号数,高位补0。

补码:

左边的最高位1表示这是一个负数。

正数的反码与其补码和原码是一样的,补码在反码的基础上加1.

1:  原码:0000 0001   

        反码/补码:000 0001   

-1: 原码:1000 0001   

        反码:1111 1110   

        补码:11111111

优先级:

2.7 控制语句

2.7.1 if条件语句

特别的:A if B else C 如果B成立则执行A,否则执行C。

2.7.3 pass语句

是一个空语句,可以临时用一个pass语句作为“占位符”,等以后再补充添加代码语句。

2.8 实战

2.8.1 二分查找

def binarySearch(alist,value):
    L=0
    H=len(alist)-1
    found=False
    while L<H:
        Middle=(L+H)//2
        if alist[Middle]==value:
            return Middle
        else:
            if value<alist[Middle]:
                H=Middle-1
            else:
                L=Middle+1
    return -1

2.8.2 冒泡排序

alist=[49,38,27,97,76,13,27,49]
debug=True

for i in range(len(alist)-1,0,-1):
    for j in range(i):
        if alist[j]>alist[j+1]:
            #temp=alist[j]
            #alist[j]=alist[j+1]
            #alist[j+1]=temp
            alist[j],alist[j+1]=alist[j+1],alist[j]  #交换两个元素
    if debug:
        print(alist)
print(alist) 

2.8.3 Floyd最短路径算法

基本思想:用一个二维矩阵表示任意两个顶点之间的距离,初始时,这个矩阵的数据元素的值表示的是两个城市的直达距离。

n=4
INFINTY=100000.0

D=[[0,2,6,4],
    [INFINITY,0,3,INFINITY],
    [7,INFINITY,0,1],
    [5,INFINITY,12,0]]

P=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] #路径矩阵

//初始化路径矩阵,即P[u][v]记录直达路径uv的终点v前面的顶点u
for u in range(0,n):
    for v in range(0,n):
        P[u][v]=u

print(*D,sep="\n") #*D是:解封参数列表”传递参数方式
                   #sep="\n"表示每个输出元素之间的分隔符是换行符"\n"
print()
print(*P,sep="\n")
print()

for w in range(0,n):
    for u in range(0,n):
        for v in range(0,n):
            #其他顶点u、v会不会因为绕道w距离变得更短呢?
            if w!=u and w!=v and D[w][u]+D[w][v]<D[u][v]:
                D[u][v]=D[u][w]+D[w][v]
                P[u][v]=P[w][v]

print(*D,sep="\n")
print()
print(*P,sep="\n")
for u in range(0,n):
    for v in range(0,n):
        if u==v continue
        print(u,'到',v,'的逆向路径是:',end=' ')
        print(v,end=' ')
        w=P[u][v]
        while w!u:
            print(w,end=',')
            w=P[u][w]
        print(u)

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值