dict字典
字典类型
映射是一种索引和数据的对应
比如:序列类型由0…N整数作为数据的默认索引
映射类型则由用户为数据定义索引
键值对:键是数据索引的扩展
字典是键值对的集合,键值对之间无序
采用大括号{}和dict()创建
形式为:<字典变量>={<键>:<值>,<键>:<值>,…<键>:<值>}
其中[]是用来向字典变量中索引或增加元素的
<值>=<字典变量>[<键>]、<字典变量>[<键>]=<值>
d={“中国”:“北京”,“美国”:“华盛顿”}
d
{‘中国’:‘北京’,‘美国’:‘华盛顿’}d[“中国”]
‘北京’de={};type(de)
<class’dict’>
空{}用于生成字典类型,而类似的集合类型虽然也用{…}表示,但只有使用set()函数来表示空集合
字典函数和方法
del d[k] 删除字典d中键k对应的数据
d.keys() 返回字典d中所有的键信息
d.values() 返回字典d中所有的值信息
d.items() 返回所有的键值对信息
d.get(k,) 键k存在,则返回相应值,不存在返回default
d.pop(k,) 键k存在,则取出相应值,不在则返回default
d.popitem()随机从字典d中取出一个键值对,以元组的形式返回
集合类型
1.集合类型
不能有相同元素,且不能存在可变元素
用{,}或者set(,)表示
无序排列
例如:
B=set(“pypy123”)
{‘1,’2’,’p’,’3’,’y’} #相同的元素将被删除(数据去重!)
s|t并运算
s-t差运算
s&t交运算
s^t补运算
及关系运算符(归属、子集判断)
集合增强操作符
S|=T更新集合S,包括ST内的所有元素
集合处理方法
S.add(x)
S.discard(x)
S.remove(x)若X不在集合中,则报错
S.clear()清除所有
S.pop()随机返回一个元素,若S为空则报错
S.copy()返回一个副本
Len(S)计算S中元素的个数
X in S
X not in S
Set(x)将其他类型转换为集合类型
1.
A={“p”,“y”,123}
for item in A:
print(item,end=‘’)#返回值是没有顺序的。
try:
while True:
print(A.pop(),end=“”)
except:
pass
p123yA
set()
判断语句
单分支结构
if<条件>:
<语句块>
二分支结构
if<条件>:
<语句块>
else:
<语句块>
紧凑型
<表达式1>if<条件>else<表达式2>[不支持表达式]
多分支结构
if<条件1>:
<语句块>
elif<条件2>:
<语句块>
else:
<语句块>
条件判断及组合
程序的异常处理
异常处理:
try:
num=eval(input(“请输入一个整数:”))
print(num**2)
except NameError:
print(“输入的不是整数”)
或者
try:
<语句块1>
except:
<语句块2>
异常处理的高级使用
try:
<语句块1>
except:{发生异常执行}
<语句块2>
else:{未发生异常时执行}
<语句块3>
finally:{必定执行}
<语句块4>
实例BMI(Body Mass Index)=kg/m^2:
#CalBMI.py
height,weight=eval(input("请输入身高(米)和体重\(公斤)[逗号隔开]:"))
bmi=weight/pow(height,2)
print("BMI数值为:{:.2f}".format(bmi))
who=""
if bmi<18.5:
who="偏瘦"
elif 18.5<=bmi<25:
who="正常"
elif 25<=bmi<30:
who="偏胖"
else:
who="肥胖"
print("BMI指标为:国际‘{0}’".format(who))
三目表达式
python我搜了一下,好像没有像C语言中的三目表达式,
不过有判断语句的紧凑型:
它的灵活性不太够,但能够节省空间,不支持表达式。
循环语句
遍历循环:
for<循环变量>in<遍历结果>:
<语句块>
字符串遍历循环
for c in “Python123”:
print(c,end=",")
------>P,y,t,h,o,n,1,2,3,
无限循环:
while<条件>:
<语句块>
循环控制保留字
break和continue[类似C,都可与for/while搭配]
循环的扩展
for<循环变量>in<>:
<>
else:<>
或者
while<条件>:
else:<>
else为完成循环的奖励,若程序中执行了break则不执行else,与异常处理中的else功能相似。
计算圆周率
# CalPiV1.py
pi=0
N =100
for k in range(N):
pi+=1/pow(16,k)(
4/(8k+1)-2/(8k+4)-
1/(8k+5)-1/(8*k+6))
print(“圆周率值是:{}”.format(pi))