笔记
简介:面向对象、解释型语言,特点:语法简洁而清晰、丰富和强大的类库、能够轻松的联结其他语言,用于三种场合:shell实现工具(不适合)、控制语言(将其他程序编写的库,通过Python调用,作为一种胶水语言)、框架,解释器:字节码(bytecode)
Python的实现:原始的实现方式(CPython)、用于与java语言集成的实现(Jython)、用于与.net框架集成的实现(IronPython)
Python程序分为:模块、语句、表达式、对象
1) 程序有模块构成
2) 模块包含语句
3) 语句包含表达式
4) 表达式建立并处理对象
面向过程:以指令为中心,由指令处理数据,如何组织代码解决问题
面向对象:以数据为中心,所有的处理代码都围绕数据展开,如何组织数据结构(或者如何设计数据结构组织数据,并提供对此类数据允许处理操作)
数据结构:Python最基本的数据结构是序列,序列中每一个元素都被分配一个序号(索引),从0开始,Python中包含6种内建的数据序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象、缓冲区。例如,list[a,b]:从索引a开始到b-1结束,索引位置从0开始
基本数据类型:
1) Integral:整型(不可变)和boolean
2) 浮点型:浮点数和复数和十进制数字
3) 字符串:不区分单引号和双引号(不可变)
4) 序列类型:列表[可变]:可直接修改内容,id不会改变,但是变得是变量名的引用、元组(不可变)。实质上,列表和元组并不真正存储数据,而是存放对象引用
调用方法type可知道变量的类型,例如,type(num)
1. 运算符
1) 算术运算符:加减乘除、取余、取商、幂计算
注意:/与//的区别:在类型是float与double类型时,/是全计算,//是取商(与java不一样);不能使用++,---操作
2) 逻辑运算符:与and 或 or非 not,is(判断is左右两边引用是否相等)
3) 比较运算符:大于、小于、不等于、等于
4) 赋值运算符:=、+=、-=
5) 优先级:幂、乘除、取余、取商、加减、比较
2. 基本语法
赋值:x=2
输出:print ‘hello’
3. 布尔类型
在进行运算时,True 就表示1,False表示0,none表示0
例如,print True+1输出1;print False*3输出0
4. 算法的三大结构:顺序、判断、循环
5. Python的控制流语句 :if、while、for…in、try
if语句
例子,
a =3
b = 2
c =1
if a>b:
t = b
b = a
a = t
if a>c:
t = c
c = a
a = t
if b>c:
t = c
c = b
b = t
print a,b,c
while循环:break:跳出当前循环 彻底终止循环;continue:continue之后的代码不执行,然后继续下一次的循环
注意:a 如果小于0的时候FALSE,终止while循环
for 循环:for 变量名 in 范围:
print 变量名
例如:list=[‘1’,’2’,’1’,’2’]
习题:1).使用for循环实现1到1000的数字之和;
2).统计字符串str='idfalksdjfldkjieakdsfnakdsfreikndkfnaskfdeuwhfrkdnfaksdnfkasdhfurehfkndfkasyurplldsnkjdlfkajdfjldskjflsadjfldskjfirejfakdsflsajfdlkasjdflkjadjfalkjfkasdjfiajefoijaewlkjflksadjfklajdfklajlfdjaldfjalksjfladjfldfjsadkfjsalkjflafjaljflasdj'中a到z的个数。
3).PokerGame中的买牌
def buynewpoker():
color= ['红桃','黑桃','梅花','方片']
value=['A','1','2','3','4','5','6','7','8','9','10','J','Q','K']
wangpai=['大王','小王']
list=[]
list.append(wangpai[0])
list.append(wangpai[1])
for i in range(len(value)):
for j in range(len(color)):
list.append(color[j]+value[i])
return list
4).洗牌
import random
def washpoker(list):
reslist=[]
count=0
while count<len(list):
a=random.randint(0,53)
if list[a] not in reslist :
reslist.append(list[a])
count+=1
for m in reslist:
print m
return reslist
washpoker(list)
5) .摸牌
def grouppoker(list):
obj=[]
list1=[]
list2=[]
list3=[]
list4=[]
for i in range(17):
list1.append(list[3*i])
list2.append(list[3*i+1])
list3.append(list[3*i+2])
for j in range(51,54):
list4.append(list[j])
obj=[list1,list2,list3,list4]
for m in range(len(obj)):
for j in range(len(obj[m])):
print obj[m][j]
print "-------------"
return
grouppoker(washpoker(list))
6) 叫牌:
1. 将摸好的牌随机分给三个玩家
2. 叫地主:传过来的玩家名字,将底牌分配给他
7)1000以内的完数
count=0
for i in range(2,1001):
sum=0
for j in range(1,i):
if i%j==0:
sum +=j
if i==sum:
count+=1
print count
8)1,2,3,4组成不重复且数字也不重复的三位数
count=0
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if i!=j and i!=k and j!=k:
count+=1
print i,j,k
print count
6. 输入与输出:input()/raw_input()与print语句
格式化输出:print ‘String %format1 %format2 ’ %(variable1,variable,…)例如,num = 7.9 print ‘the num is %f’ %num/print ‘the num is %d’ %num
7.常用函数:
dir([obj]):显示对象属性,如果没有提供参数,那么显示全局变量的名字
help([obj]):显示对象文档
len(obj):返回对象长度
range():返回一个整数列表,从0开始
range(a,b):返回从a开始到b-1的列表
int(obj):转成int类型
str(obj):转成字符串类型
type(obj):返回对象类型
append(obj):给列表添加一个元素
extend([obj]):参数中的列表添加到自身列表的末尾
insert(a,b):从索引值为a的位置添加一个元素b,所以list.insert(0,x)相当于list.append()
remove(x):删除列表中第一个值为x的函数,如果没有,那么这个函数就会执行报错
pop(i):删除列表指定位置的元素并返回它。i表示这个参数是可选的,如果不输入,将删除最后一个元素并返回
index(x):返回第一次出现x元素的索引值
count(x):统计元素x的个数
reverse():反转列表中的元素
random.randint:
random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
random.uniform:
random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。
random.random
random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0
in 或者 not in
在python中可以通过in和not in关键字来判读一个list中是否包含一个元素,例如,
theList = ['a','b','c']
if 'a' in theList:
print 'a in the list'
练习:
1.List=['a','c','s','a','a','m','n','c','d','r','y','t','f','u','r','e','z','h','v','v','d','v','n','q']
1)列表不适用reverse函数 实现反转
2)列表使用reverse函数进行反转后 倒序(从z开始到a)统计 列表中各个字母数量总数如 z 15……………… a 12
3)按照统计的大小输出
答:1)list =['a','c','s','a','a','m','n','c','d','r','y','t','f','u','r','e','z','h','v','v','d','v','n','q']
for i in range(1,len(list)+1):
print list[-i]
list =['a','c','s','a','a','m','n','c','d','r','y','t','f','u','r','e','z','h','v','v','d','v','n','q']
#for i in range(1,len(list)+1):
# print list[-i]
list.reverse()
test=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
test.reverse()
for j in test:
print j,list.count(j)
3)list =['a','c','s','a','a','m','n','c','d','r','y','t','f','u','r','e','z','h','v','v','d','v','n','q']
c=[]
for i in range(len(str)):
count=0
for j in list2:
if str[i]==j:
count+=1
c.append(count)
#print list2[c.index(max(c))]
co=0
temp=[]
for j in range(3):
for i in str:
if list2.count(i)==max(c)-j: #字母排序
temp.append(i)
co+=1
if co==3: #取前3个
break
print temp
2.冒泡排序
def maopao(list):
temp=0
for i in range(len(list)):
for j in range(i+1,len(list)):
if list[i]>list[j]:
temp = list[j]
list[j]=list[i]
list[i]=temp
return list
8.python语句和语法
标识符:大小写敏感
Python关键字列表和iskeyword()
错误:expected an indented block;解决:首行缩进4个字符