循环控制
在python程序运行时是自上而下顺序的运行,就好比说:把大象装进冰箱里需要几步。事件1打开冰箱门,事件2把大象塞进去,事件3把冰箱门关上。就完成了把大象方静冰箱的操作。python程序也是如此,一步一步运行。但是如果你完成了事件1,突然有人喊你,让你做另一件事。怎办呢?我们应该判断一下,是继续装大象呢还是区做其他事情?这就是我们程序上的中断的了,也就是说在事件2的时候我们被打断了。在python中又是怎样实现的呢?
1 循环控制之if
python中的有两件事情A,B。做完了事情就可以做事件3。
# 事件1 事件A与事件B,事件3 a = input('事件1:请输入要做事件A or B') if a == 'A': print('做事情A:做其他事情') else: print('做事情B:装大象') print('事件3:继续向下执行')
...
在上面的例子,如果我们不去做其他事情,就继续装大象,这就是if...else的搭配,不是A,就是B。但是不管我们是装大象还是做其他事情,做完事情后仍然继续做事件3。如果其他事情是装老虎,装猴子,怎么办?我们就需要if的另一种用法,if...elif...else.
# 事件1 事件A与事件B,C,D,事件3 a = input('事件1:请输入要做事件A or B') if a == 'A': print('做事情A:做其他事情') elif a == 'C': print('装老虎') elif a == 'D': print('装猴子') else: print('做事情B:装大象') print('事件3:继续向下执行')
在if语句使用时,读者应该看出if的使用语法:if+判断条件。这个判断条件就是选择的依据。条件成立即为真,否者为假(这个读者可以思考一下前面所讲的布尔值)。条件为真就执行,此条件下的指令块。
在这里要讲一下,python对于格式比较讲究的,主程序靠左对齐,每个控制下的指令块为为子程序,与主程序相比退后4个空格,同级对齐,以此类推。
2 循环控制while
while的使用语法和类似:while + 条件语句:但是if和while相比,while才是算是一个循环指令。当条件指令为真且不变,那么while下的子程序将会无限执行下去。在写程序时这种情况最好不出现,对计算机的CPU来说是一种‘伤害’,计算机不停计算,硬盘不停存储数据,读者朋友,你可以在你电脑上试试。此外,break指令,continue指令的使用,while...else...也可使配合使用。
# while语句都使用 while True: print('死循环‘) 死循环 死循环 死循环 死循环 死循环 。。。
while + break #将while那一层循环结束
while + continue #将continue所在循环,本次结束,开始下一次
while + else # while循环正常结束是执行else
3 循环控制for
for语句也是一个循环语句,但是for的语法和前面两种有些不同。for+(变量名[i/j/itmer])+in+对象。这个对象可以是字符串,列表,字典,元组,集合等。
和while,if还有一点不同的是它不需要判断条件,for也可以与else配合使用。
a = '1234546789' # 字符串遍历 for i in a: print(i, end=' ') 1 2 3 4 5 4 6 7 8 9 # 列表遍历list() for j in list(a): print(j, end=' ') 1 2 3 4 5 4 6 7 8 9 # # 字典遍历 a1 = {'a': 1, 'b': 2, 'c': 3} for itmer in a1: print(itmer, end=' ') #字典遍历只把键送出来。 a b c
知识扩展
len(),可以计算容器内元素个数。
a = '1234546789' # 字符串长度/个数 print(len(a)) 10 # 列表元素个数/长度 print(len(list(a))) 10
range()
在python2中也有range,和xrange(),和python3有什么区别吗?我们来看
在python2中我们使用range(),程序会把数据立即提取出来,xrange()和python3中一样。
小试牛刀
户登录次数
1, 用户登录三次失败后直接结束程序
2, 用户尝试三次错误之后提示用户是否继续尝试,如果用户输入'y'那么再给用户三次机会,输入'q'直接退出
# 1, 用户登录三次失败后直接结束程序 from_db_ureName = 'meKing' from_db_password = 123 sign = True a = 0 # 记录错误次数 while sign: ureName = input('请输入用户名:').strip() password = int(input('请输入密码:').strip()) if ureName == from_db_ureName and password == from_db_password: print('%s,您已成功登录'%ureName) sign = False else: a += 1 # 没错误一次,加一 if a == 3: # 如果错误三次,将退出程序 sign = False print('非法输入') continue # 结束本次循环 # 2, 用户尝试三次错误之后提示用户是否继续尝试,如果用户输入'y'那么再给用户三次机会,输#入'q'直接退出 from_db_ureName = 'meKing' from_db_password = 123 sign = True # 程序对出标志位 a = 0 # 错误计数变量 while sign: ureName = input('请输入用户名:').strip() # strip(),清除字符串两边空格 password = int(input('请输入密码:').strip()) if ureName == from_db_ureName and password == from_db_password: sign = False print('%s,您已经成功登录') else: a += 1 if a == 3: # 判断是否错误有三次 cmd = input('您已经错误三次,继续输入"Y",退出输入"q":').strip() if cmd == 'Y': # 判断是否再次输入 a = 0 # 错误计数清零 elif cmd == 'q': # 判断是否退出 sign = False continue