02python基础----控制流程

写在前面:

(1)bool是一种数据类型,其值为True和False,实际上bool是内置的整数类型int的子类(class bool(int))。Python中把任意的空数据结构视为False,把任意非空结构视为True。

其实,Python中的每个对象都有其bool值。

int 0,float0.0, 空列表[],空字典{},空元组(),空集合set(),空deque() 的bool值都是False。

(2)None也是一种数据类型,它是一个真正的对象,并有一块内存,其bool值总被视为False。

(3)if语句和其他的选择工具会自动的使用数据的布尔结果。

 

一、分支(if)

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 = input('please enter your name:')
pwd = input('please enter you password:')
if (name in d) and pwd == d[name]:
    print('welcome', name)
else:
    print('请重新输入')

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 = input('please enter your name:')
pwd = input('please enter you password:')
if name in admin and pwd==admin[name]:
    print('欢迎管理员',name)
elif name in user and pwd==user[name]:
    print('欢迎',name)
else:
    print('输入错误')

1.4 条件表达式(三元表达式)

表达式1 if 真值表达式 else 表达式2

a,b = 3,2
max = a if a>b else b

二、循环结构(while & for)

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 = input('please enter your name:')
pwd = input('please enter you password:')
n=0
while(name not in d or pwd!=d[name]):
    n=n+1
    if n>2:
        print('输入次数超过3次')
        break   #因为不满足while条件而退出循环,则执行else,遇到break跳出循环,不会执行后面的else
    print('你还有',3-n,'次机会')
    name = input('please enter your name:')
    pwd = input('please enter you password:')
else: #当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句
    #如果执行过程中被break啦,就不会执行else的语句啦
    print('欢迎',name)

(2)for语句+else语句

l1 = [2,3,5]
l2 = [1,2,3,4]

for i in l1:
    for j in l2:
        if i==j:
            print(i,'was found')
            break
    else:
        print(i,'not found')#和while语句一样,如果for循环未执行break,则会执行此else

 (3)break语句

跳出整个循环,break经常与if语句结合使用,用if语句判断是否满足跳出循环的条件

#求最大真因数
n=int(input('please input the number:'))
m=n//2
while m>0:
    if n%m==0:
        print('最大真因数为',m)
        break
    m=m-1

 (4)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('1-100中有',n,'个数可以同时被3和7整除。')

 2.2 for语句

(1)enumerate语句

enumetrate函数不仅可以访问迭代对象的元素,也可以访问其索引

#输出歌手出场顺序
namelist=[u'郑智化',u'周杰伦',u'许嵩',u'叶慧美']
for n,name in enumerate(namelist):
    print('',n+1,'位出场歌手:',name)

(2)range函数

#计算1+2+...+100
s = 0
for i in range(1,101):
    s += i
print(s)

(3)xrange函数

xrange与range类似,但不会在内存中创建列表的完整副本,只能用于for循环中,在for 循环外,xrange函数没有意义

(4)迭代器

迭代器有一个next方法,调用后会扫描下一个条目,所有条目迭代后,会引发StopIteration异常告诉循环结束

(5)列表解析

for 语句也可以用于列表解析中,可以动态创建列表

l= [pow(a,2) for a in range(2,10)]
print(l)

teldict = {'mary':'1234', 'cc':'1111', 'dd':'2222'}
print([teldict[name] for name in teldict])

 打印久久乘法表:

#九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print(j,'*',i,'=', i*j,end='  ')
    print()

 

posted @ 2020-04-03 10:22  cheng4632  阅读(79)  评论(0编辑  收藏  举报