type()可以查询一个值的数据类型。
一个对象包含:值、数据类型和id。
可以用python内置函数id()来查询一个对象的id。
变量是对象的引用。
True和False是python的bool(布尔)类型的两个值。
变量名只能包含字母、数字和下画线,且不能以数字开头。
python是动态类型语言。
python主要内在数据类型:数值(number)、字符串(str)、列表(list)、元组(turple)、集合(set)、字典(dict)。
int(整型)、float(浮点型)、complex(复数类型)、bool(布尔类型)。
浮点型的值小数点后的精度不超过15位,复数型的值总被写成x+yi形式。
元组不可修改,可以用下表运算符[]访问turple的元素。
只有一个元素的turple的最后必须加一个逗号,如(25,)表示一个turple,而(25)代表一个整数。
如果字符串的内容写在多行,则首尾分别要用三个单引号或双引号包围多行的字符序列。
str类型的对象不可修改。
\'表示单引号字符
\\表示单个斜杠字符\
\t表示制表符
\n表示换行符
set是不包含重复元素的无序集合,用左右花括号{}包围。
list对象无法计算哈希值,所以不能作为集合的元素。
一个“键-值”对的无序集合。
以“键:值”的形式存储。
某些情况下,python会自动将一个类型转换为另外一个类型。
内置函数str()将数值类型(int、float、complex)的值转为字符串str类型。
int()不能将一个不合适格式的字符串转为int类型的值,如:a=int(1,000')。
input(promote='')
promote是一个用于提示信息的字符串,如name=input('请输入你的用户名:')
对两个运算数的对应二进制位进行运算:
& 位与、| 位或、^ 异或
对一个运算数的二进制位进行运算:
~取反、<<左移位、>>右移位
二元位运算符的运算规则:
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
优先级:
特别的:A if B else C 如果B成立则执行A,否则执行C。
是一个空语句,可以临时用一个pass语句作为“占位符”,等以后再补充添加代码语句。
def binarySearch(alist,value):
L=0
H=len(alist)-1
found=False
while L
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)
基本思想:用一个二维矩阵表示任意两个顶点之间的距离,初始时,这个矩阵的数据元素的值表示的是两个城市的直达距离。
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]
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)