三、控制流程

一、选择结构

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']

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值