一、选择结构
1.1 单分支结构
if 表达式:
代码块
#检测用户是否输入了正确的用户名,使用列表保存用户名
a = ['mike', 'mary', 'john', 'tom', 'jenny', 'herry']
b = raw_input('please enter your name:')
if (b in a):
print 'welcome', b
#检测用户是否正确输入用户名和密码,使用字典保存
d={'mike':'123','bob':'234','cc':'333','tom':'999'}
name=raw_input('please enter your name:')
pwd=raw_input('please enter you password:')
if(name in d) and pwd==d[name]:
print 'welcome',name
1.2 双分支结构
if 表达式:
代码块1
else:
代码块2
# 检测用户是否正确输入用户名和密码,使用字典保存,不正确提示重新输入
d = {'mike': '123', 'bob': '234', 'cc': '333', 'tom': '999'}
name = raw_input('please enter your name:')
pwd = raw_input('please enter you password:')
if (name in d) and pwd == d[name]:
print 'welcome', name
else:
print u'请重新输入'
1.3 多分支结构
根据多个条件进行判断
if 表达式1:
代码块1
elif 表达式2:
代码块2
...
elif 表达式n:
代码块n
else:
代码块n+1
#如果用户输入管理员用户名和密码则欢迎管理员,普通用户,否则提示重新输入
admin={'admin':'111111','cc':'123456'}
user={'aa':'123','bb':'234','mm':'444'}
name = raw_input('please enter your name:')
pwd = raw_input('please enter you password:')
if name in admin and pwd==admin[name]:
print u'欢迎管理员',name
elif name in user and pwd==user[name]:
print u'欢迎',name
else:
print u'请重新输入'
1.4 条件表达式
二、循环结构
2.1 while语句
#计算1+2+...+100
n=1
s=0
while n<=100:
s+=n
n=n+1
print s
(1)while语句+else语句
# 检测用户是否正确输入用户名和密码,使用字典保存,不正确提示重新输入,三次机会
d = {'mike': '123', 'bob': '234', 'cc': '333', 'tom': '999'}
name = raw_input('please enter your name:')
pwd = raw_input('please enter you password:')
n=0
while(name not in d or pwd!=d[name]):
n=n+1
if n>2:
print u'输入次数超过3次'
break #因为不满足while条件而退出循环,则执行else,遇到break跳出循环,不会执行后面的else
print u'你还有',3-n,'次机会'
name = raw_input('please enter your name:')
pwd = raw_input('please enter you password:')
else:
print u'欢迎',name
(2)break语句
跳出整个循环,break经常与if语句结合使用,用if语句判断是否满足跳出循环的条件
#求最大真因数
n=int(raw_input('please input the number:'))
m=n/2
while m>0:
if n%m==0:
print u'最大真因数为',m
break
m=m-1
(3)continue语句
跳出此次循环
#求1-100中同时被3和7整除的数的个数
n=0
m=0
while m<101:
m=m+1
if m%3!=0 or m%7!=0:
continue
n=n+1
print u'1-100中有',n,'个数可以同时被3和7整除。'
2.2 for语句
(1)enumerate语句
enumetrate函数不仅可以访问迭代对象的元素,也可以访问其索引
#输出歌手出场顺序
namelist=[u'郑智化',u'周杰伦',u'许嵩',u'叶慧美']
for n,name in enumerate(namelist):
print u'第',n+1,'位出场歌手:',name
(2)range函数
#计算1+2+...+100
s=0
for i in range(1,101,1):
s=s+i
print s
(3)xrange函数
xrange与range类似,但不会在内存中创建列表的完整副本,只能用于for循环中,在for 循环外,xrange函数没有意义
(4)迭代器
迭代器有一个next方法,调用后会扫描下一个条目,所有条目迭代后,会引发StopIteration异常告诉循环结束
(5)列表解析
for 语句也可以用于列表解析中,可以动态创建列表
[pow(a,2) for a in range(2,10)]
teldict={'mary':'1234','bob':'2345','cc':'2222'}
print [teldict[name] for name in teldict]
#表达式中也可以不使用循环变量
b=10
print [b+2 for a in range(2,10)]
#可以搭配if语句
[name for (name,tel) in teldict.iteritems() if tel=='2222']