< 返回索引页html
上一张咱们了解了Python的基本语法和数据结构。到目前位置,咱们编写的代码都是一行一行的由上往下一次执行的。咱们叫这种形式的代码为顺序结构
。可是在真正的编码环境中,这种顺序结构实现的场景有限。下面咱们来看下Python编程中的一些其余复杂控制结构。编程
试想,一个简单的计算器的计算过程,当咱们按下加号键的时候,它会执行相加操做;当咱们按下减号的时候,它则会执行减法操做。这并产生了2个分支,它根据咱们的输入这个未知的条件来决定该走那个分支。像这种根据某条件来判断走那个分支的结构叫作分支结构
。segmentfault
Python 中使用关键字if
、 else
和 elif
来实现分支结构。下面咱们来看下它们的语法:数据结构
# -*- coding:utf-8 -*- # calculator.py a, b = 2, 3 sign = input('请输入运算符:') if sign == '+': # 判断条件 print(a+b) # 逻辑代码块 elif sign == '-': print(a-b) else: print('暂不支持该符号!')
语法说明:dom
:
结尾;if
和 elif
后必须加判断表达式,通常表达式返回值为布尔型,当非布尔型时,表示该值是否存在。if
可单独使用,也可单独和elif
或 else
配合使用。# if 单独使用 if '1': print('这是真的') # if 和 else 配合使用 if False: print('这是假的') else: print('这是真的') # if 和 elif 配合使用 if False: print('这是假的') elif True: print('这是真的')
# -*- coding:utf-8 -*- # nesting_if.py a = int(input('请输入:')) if a > 4: if a < 10: print('大于4,小于10') else: print('大于10') else: print('小于4')
三元操做符
。a = '上午好' if now_time < 12 else '下午好'
上一章咱们还学习了列表,那当咱们要想依次去除列表中的元素时,便须要来循环依次取出,这种循环操做的结构叫作循环结构
。函数
Python 中使用关键字 for
来实现已知长度的循环。用法以下:oop
l = [1,2,3,4,5] sum = 0 for i in l : sum += i print(sum)
语法说明:
for
使用关键字in
来遍历序列,获取其元素,有变量i
来表示,以便在之下的逻辑代码块中使用。for
语句以英文冒号结尾for
循环也是能够嵌套使用的。for
还可遍历成组元素的序列,以下:l = [(1,2),(1,3),(1,4)] for i, j in l: print(i) print(j)
在Python中提供了一个内置函数 range(start,length,step)
来专门生成用来遍历的整数序列,其返回值为迭代器(可理解为列表对象,后边会讲解)。start
为开始整数,可省略,省略时默认为0;length
为结束整数,但不包含本身;step
为步长,及2个整数之间的间隔,可省略,省略时默认为1。使用range
函数来改写上边的代码为:
sum = 0 for i in range(1,6): sum += i print(sum)
Python 中还提供了另外一种循环语句关键字 while
用来实现知足条件下的一个循环操做。
# loop_while.py i = 0 sum = 0 while i <= 5: sum += i i += 1 print(sum)
咱们试想,当while
的条件永远为真时,会发生什么?while下的逻辑块会被一直执行下去,若是该逻辑段耗费计算机资源的话。计算机资源会被他很快的消耗殆尽。这种状况,咱们把它叫作死循环
或无限循环
。这种循环,大多数状况下都是不对的,除非你明确的知道,你就是要使用一个这样的无限循环。Python 中提供了2个关键字break
和continue
,让咱们的操做能够跳出无限循环。
break 用法
# while 中使用 sum = 0 while True: if sum > 10: print('sum已大于10') break sum += 1 print(sum) # for 中使用 sum = 0 for i in range(100): if sum > 10: print('sum已大于10') break; sum += 1 print(sum)
语法说明:
break
语句执行后,直接退出循环,再也不循环continue用法
sum = 0 for i in range(100): if sum > 10: print('sum已大于10') continue; sum += 1 print(sum)
语法说明:
continue
语句执行后,当前循环语句以后的语句再也不执行,直接跳入下一次的循环继续执行。有时候,咱们的代码块想直接跳过,可以使用关键字 pass
。它常被用来占位使用。
for i in range(5): pass # 占位
本章咱们学习了Python的代码逻辑控制流,咱们来总结下:
if
/elif
/else
实现;for
/while
实现;break
和continue
来截断循环结构;for i in range(1, 10): for j in range(1, i + 1): print('%d*%d=%d' % (i, j, i * j), end='\t') print()
+
、-
、*
、/
的运算。first = int(input('请输入一个数值:')) sign = input('请输入运算符:') second = int(input('请输入一个数值:')) if sign == '+': print('%s+%s=%s' % (first, second, first+second)) elif sign == '-': print('%s-%s=%s' % (first, second, first-second)) elif sign == '*': print('%s*%s=%s' % (first, second, first*second)) elif sign == '/': print('%s/%s=%s' % (first, second, first/second)) else: print('不支持该运算符')
""" * ** *** **** ***** * ** *** **** ***** * *** ***** ******* ********* """
row = int(input('请输入行数: ')) for i in range(row): for _ in range(i + 1): print('*', end='') print() for i in range(row): for j in range(row): if j < row - i - 1: print(' ', end='') else: print('*', end='') print() for i in range(row): for _ in range(row - i - 1): print(' ', end='') for _ in range(2 * i + 1): print('*', end='') print()
四、实现猜数字游戏, 要求:
import random answer = random.randint(1, 100) counter = 0 while True: counter += 1 number = int(input('请输入: ')) if number < answer: print('大一点') elif number > answer: print('小一点') else: print('恭喜你猜对了!') break print('你总共猜了%d次' % counter) if counter > 7: print('你的智商余额明显不足')