if语句
计算机又被称作电脑,意指计算机可以像人脑一样,根据周围环境条件(即expession)的变化做出不同的反应(即执行代码)if语句就是来控制计算机实现这一功能
语法:
1.单分支,单个条件判断
if expression:
expr_true_suite
注释:expression为真执行代码expr_true_sutie
2.单分支,多个条件判断
if not active or over_itme>=10:
print ('Warning:service is over')
3.if与else
if expression:
expr_true_suite
else:
expr_false_suite
4.多分支if+elif+else
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
elif expression3:
expr3_true_suite
else:
expr_false_suite
小结:
1.if 后表达式返回值为True则执行其子代码块,然后此if语句到此终结,否则进入下一分支判断,直到满足其中一个分支,执行后终结if
2.expression可以引入运算符:not,and,or,is,is not
3.多重expression为加强可读性最好用括号包含
4.if与else缩进级别一致表示是一对
5.elif与else都是可选的
6.一个if判断最多只有一个else但是可以有多个elif
7.else代表if判断的终结
8.expession可以是返回值为布尔值的表达式(例x>1,x is not None)的形式,也可是单个标准对象(例 x=1;if x:print('ok'))
# a=1 # if a : # print ('ok') # b=1 # if b-1: # print ('ok') #if判断也可使用表达式的方式
9.所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布 尔 True 或 False 值。空对象、值为零的任何数字或者 Null 对象 None 的布尔值都是 False。
下列对象的布尔值是False
练习
#!/usr/bin/env python #_*_coding:utf-8_*_ ''' 根据用户输入内容打印其权限 lhc --> 超级管理员 hj --> 普通管理员 ys,dh --> 业务主管 其他 --> 普通用户 ''' name = raw_input('请输入用户名:') if name == "lhc": print("超级管理员") elif name == "hj": print("普通管理员") elif name == "ys" or name == "dh": print("业务主管") else: print("普通用户")
注意这里面有一个问题就是python2.x的版本input输入字符串会报错,需要使用raw_input。但是python3.x的版本就不用担心这个问,在python3中就没有raw_input。各位要看仔细了
#!/usr/bin/env python #_*_coding:utf-8_*_ ''' 提示输入用户名和密码 验证用户名和密码 如果错误,则输出用户名或密码错误 如果成功,则输出 欢迎,XXX! ''' import getpass name=raw_input('用户名: ') passwd=getpass.getpass('密码: ') if name == 'lhc' and passwd == '123': print(name,'欢迎') else: print('请重新输入')
这里注意下import getpass模块,正常来说,用户名可见而密码不可见所以如果使用passwd=raw_input的话,那么在执行python脚本时你的密码就是可见得,这样来说不安全,所以使用getpass。passwd=getpass.getpass这样来写。这个例子最好在linux平台测试
三元表达式
语法:
expr_ture_suite if experssion else expr_false_sutie
红色的部分代表着一元,如果红色部分判断为真,则执行蓝色部分,代表第二元。如果红色部分判断为假,那么则执行绿色部分,代表第三元。这就是三元表达式
例子
test=1 print('is True')if test else print('is False') is True test=0 print('is True')if test else print('is False') is False
while循环(条件循环)
语法:
while expression:
suite_to_repeat
注:重复执行suite_to_repeat,直到expression不再为真时
例子
计数循环
count=0
while (count < 9):
print('the loop is %s' %count)
count+=1
无限循环
while True:
print ('-----')
tag=True
count=0
while tag:
if count == 100:
tag=False
print('the loop is %s' %count)
count+=1
循环的嵌套嵌套
for i in range(5): print ('======>第一层for') for j in range(2): print ('第二层for') for i in range(5): print ('======>第一层for') for j in range(2): print ('第二层for1') break #如果这是break的话 则第二层for2永远不会执行,虽然第二层for循环两次。但是只要碰到break直接跳出本层循环 print ('第二层for2') for i in range(5): print ('======>第一层for') for j in range(2): print ('第二层for1') continue #如果是continue的话,那么第二层for2也永远不会执行,但是continue是跳过本次循环,说明在continue后面的循环都不会再运行,接着运行for j in range(2)。直到循环结束 print ('第二层for2')
标志位
x=True while x: a=raw_input('level1') if a=='q': break if a == 'exit': x = False while x: b=raw_input('level2') if b=='q': break if b == 'exit': x = False while x: c=raw_input('level3') if c=='q': break if c=='exit': x=False while x: d=raw_input('level4') if d=='q': break if d=='exit': x=False print ('next')
while循环的break,continue,else连用
for i in range(10):
print (i)
else:
print('Is ok')
#当for循环正常结束后就会运行else的内容。正常结束:该有几次循环(操作)就要输出几次。
for i in range(10):
print (i)
if i ==7:
break
else:
print('Is ok')
#这个例子就是非正常结束,else就不会运行。
for i in range(10):
print (i)
if i ==7:
continue
else:
print('Is ok')
#但是使用continue就是正常结束。总结就是如果for循环中有breakelse就不会执行。
同样的道理。在while循环中也可以使用else,使用方法跟for循环一样
练习
dic={ 'lhc':{'password':'123','count':0}, 'hj':{'password':'456','count':0}, 'ys':{'password':'789','count':0} } x=True while x: print ('<welcome to python world>') print ('') name=raw_input('please input your user:') if name not in dic: print ('No user!') continue else: if name in dic and dic[name]['count'] == 3: print (name,'Your user is locked') continue else: passwd=raw_input('please input your password:') if passwd ==dic[name]['password']: print ('welcome to python world %s !' %name ) break else: print ('Password is error') dic[name]['count'] += 1 print ('The user login error count',dic[name]['count'])
小结:
条件为真就重复执行代码,直到条件不再为真,而if是条件为真,只执行一次代码就结束了
while有计数循环和无限循环两种,无限循环可以用于某一服务的主程序一直处于等待被连接的状态
break代表跳出本层循环,continue代表跳出本次循环
while循环在没有被break打断的情况下结束,会执行else后代码
for循环
字典循环 # dic={'name':'chras_lee','age':18} # for i in dic.items(): # print i,i[1] #一个变量循环字典 # dic={'name':'chras_lee','age':18} # for i in enumerate(dic): # print (i,i[1],dic[i[1]]) #使用enumerate循环字典 # dic={'name':'chras_lee','age':18} # for k,v in dic.items(): # print (k,v) #两个变量循环字典 # # dic={'name':'chras_lee','age':18} # for k in dic.keys(): # print (k,dic[k]) #使用dic.keys取value值 # # dic={'name':'chras_lee','age':18} # for v in dic.values(): # print (v) #使用dic.values直接取出value值 # dic={'name':'chras_lee','age':18} # for k in dic: # print (k,dic[k]) #常用方法 #直接for循环字典就是遍历字典的key
循环字符串 # mes='hello' # for i in mes: # print (i) #for循环字符串 # mes='hello' # for i in enumerate(mes): # print i #使用enumerate将字符串以元组的方式遍历 # mes='hello' # for i in mes[::-1]: # print (i) #倒着循环
循环列表 # l=['a','b','c'] # for i in l: # print (i) #循环列表 # l=['a','b','c'] # for i in enumerate(l): # print (i) #使用enumerate将列表以元组的方式遍历 # # l = ['a', 'b', 'c'] # for i in l[::-1]: # print (i) #倒着循环
循环元组 # t=('a','b','c') # for i in t: # print (i) #循环元组 # # t=('a','b','c') # for i in enumerate(t: # print (i) #使用enumerate将元组以元组的方式遍历 # t=('a','b','c') # for i in t[::-1]: # print (i) #倒着循环
待续。。。