Python顺序结构、分支结构(判断)和循环结构

一、顺序结构

秉承从上到下,从做到右的运行规则,如下图:

#顺序结构
xiaoming = "我很帅。"
xiaoliu = "小明你的确很帅,但是不能当饭吃啊!!!,还是要继续努力学习!"
print("小明说:"+xiaoming,xiaoliu,sep='小刘鄙视的说:')

#=运行结果
小明说:我很帅。小刘鄙视的说:小明你的确很帅,但是不能当饭吃啊!!!,还是要继续努力学习!

二、分支结构--条件判断

条件语句或判断语句,指明了当某些条件成立时才运行某个模块。否则,会跳过这个区块中的语句,然后继续运行区块后面的语句,python中的条件语句都以if开头

2.1.if语句

如下例子,输入年龄,根据不同的年龄打印不同的内容,用python中if语句怎么实现: 

age = int(input("请输入年龄:"))

if  age >= 20:
    print("你今年"+age+岁)
    print"ok"

python中,如果if后面条件语句判断是True,就把缩进的两行print语句执行,否则,什么不会执行,注意:

  • 每个条件语句后面有个冒号
  • 每个条件语句下面的缩进,就是为了让python解释器知道:条件满足后,要执行的代码究竟到什么位置。当然缩进四个空格只是推荐做法,你完全可以缩进1个、2个或者6个,甚至Tab键盘进行缩进。但是同一个条件语句下面对应的执行代码必须对齐。如果缩进一个空格,那么都缩进一个,相邻的相同缩进距离的代码都是顺序执行的

2.2 if-else 语句

也可以给if添加一个else语句,意思是,如果if后面的条件语句判断是False,不要执行if的内容,而是执行else的那部分

age = int(input("请输入年龄:"))

if age >= 18:
    print("你成年了")
else:
    print("你还是未成年人,不能上网!!!")

else语句对应下面要执行的代码缩进规则和if语句一致

2.3.elif语句

如果需要更加多的判断情况,这时候采用elif的方法,elif是else if的缩写

results = int(input("请输入你的成绩:"))

if results >= 90:
    print("你的成绩很优秀")
elif  90 > results >= 70:
    print("你的成绩良好")
elif 70 > results >= 60:
    print("成绩合格")
else:
    print("很遗憾,成绩不合格,继续努力哦")

注意:

  • 条件判断代码以if开头,其余的条件以elif开头,结尾else表示不满足除了上面的条件以为的情况
  • 每个条件语句后面有个冒号:
  • 每个条件语句下面对应的执行内容,均以缩进缩进了四个空格
  • 也可以只有if,而没有else

补充:if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,忽略掉剩下的elif和else 

2.4.多个条件表达式的组合

多个条件的组合

age = 60
gender = 'male'
if age >=60 and gender == 'male':
print('old gentleman')

上面需要同时成立两个条件,关键字是and,如果是其中一个条件成立即可的关键字,我们用or,比如:

age = 60
gender = 'male'
if age >= 60 or age < 18:
print('you can not play this game')

我们经常在一个条件前面加上not表示反义,比如

age = 60
gender = 'male'
if not(age >= 60 or age < 18):
print('you can play this game')

如下组合也可以

  age = 60
  gender = 'male'

  if (age >= 60 or age <18 and gender=='female')
  print('you can not play this game')

2.5.条件语句嵌套

条件语句块里面还有条件判断。可以称之为条件语句的嵌套

如下例子:假设一个班级,要给学生安排座位,规则是同名的学生不能安排在一个课桌。并且每个课桌上,名字按字母排序,排在前面的坐在左边

if studentname1 != studentname2:
    print('this could sit together')
    if student01 <= student02:
        print('%s sit in left' % studentname1)
    else:
        print('%s sit in left' % studentname2)

注意:里面的条件判断对应的执行代码再次缩进

三、循环

判断和循环是两个最基本的控制程序执行的方式。上面我们讲了条件判断,现在来说说循环。所谓循环就是重复的执行某段代码段。可能会给循环设定一些条件,只有添加满足就不断循环,条件不满足时推出循环

3.1.while循环

python就采用while关键字来表示某个条件成立情况下,一直执行一些动作,语法如下:

while 条件表达式
    循环代码

python中如果需要做不定次数的循环,建议使用while Ture这种结构,但python中没有do-while这种循环

li = []
while True:
    i = input('说:')
    if i != 'quit':
        li.append(1)
    else:
        break()

我们要避免错误的死循环,可是死循环在特定场所也有其应用,像Liunx Shell这样人机交互程序,就是一个死循环,它循环等待用户输入命令,执行,在等用户输入命令。在执行。

3.2.for循环

for循环,在明确循环次数的时候建议使用for循环。

python中for循环可以取一个范围内的值:

for i in range(3):
    age = int(input("请输入年龄:"))
    if age >=18:
        print("你已经成年了")
    elif age >= 65:
        print("退休时候了,好好享受吧!!!")
    else:
        print("哎呀,年龄太小,好好学习吧")

python中for循环还可以直接从序列中取出元素 

#for循环从列表选取
list_num = ['','','','','','','','','','']
for i in list_num:
    print(i)

3.3循环嵌套

在循环里面还有循环。这样子被称之为循环的嵌套。循环嵌套通常用来列出可能的组合性,如下: 

boys = ['Mike','Jack','Tom']
girls  = ['Lisa','Linda','Mary']
for boy in boys
    for girl in girls:
        print('%s kiss %s' % (boy,girl))

嵌套循环,是从外层往内执行的。当内层的循环都执行完后,再继续执行外层循环。

4.3.4.range()函数

如果我们想计算1-10的整数之和,可以用sum变量做累加

sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
    print(sum)
    print('*******')
print(sum)

那如果要计算1到10000呢?,这时候就可以使用range()函数,可以生成一个整数序列,例如range(10)生成的序列是从0开始小于10的整数

Int_list = []
for one in range(10):
    Int_list.append(one)
    print(one)

print(Int_list)

那1到10000求和是多少呢? 

Int_list = []
for one in range(10001):
    Int_list.append(one)

print(Int_list)
print(sum(Int_list))

使用range指定区间的值

for i in range(5,10):
    print(i)

D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/loop.py
5
6
7
8
9

注意,左含右不含,区间为5到10,但是不包含10

使用range()可以指定数字开始并指定不同的增量(甚至可以是负数,有时候也叫做步长),下面例子指定步长为5:

for one in range(0,20,5):
    print(one)

#执行结果
D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/loop.py
0
5
10
15

结合range()和len()函数以遍历一个序列的索引,如下所示

se = ["google","Baidu","biying","sougou"]
for i in range(len(se)):
    print(i,se[i])

#执行结果
D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/loop.py
0 google
1 Baidu
2 biying
3 sougou

3.5.break和continue

break语句用来中止当前的循环。注意这里的用词:当前循环。因为循环可能会嵌套

print("break用法展示:")
sites = ["google","baidu","biying","sougou"]
for site in sites:
    if site == "biying":
        print("找到了%s" % site )
        break
    print("循环数据"+site)
print("完成循环")

D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/endCycle.py
break用法展示:
循环数据google
循环数据baidu
找到了biying
完成循环

continue用于中止当前循环的continue后面的剩下的其余语句,但是当前循环本身并不中止,还要继续下一轮循环

print("continue用法展示:")
sites = ["google","baidu","biying","sougou"]
for site in sites:
    if site == "biying":
        print("找到了%s" % site)
        continue
    print("循环数据"+site)
print("完成循环!!!")

D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/endCycle.py
continue用法展示:
循环数据google
循环数据baidu
找到了biying
循环数据sougou
完成循环!!!

3.6.else和pass关键字

else关键字

在 Python 中,else 语句可以与循环结构(forwhile)一起使用。它的行为与 if 语句中的 else 略有不同:

  • 在循环中,else 语句块会在循环正常结束时执行,即循环没有被 break 语句中断时。
  • 如果循环因为 break 语句而提前退出,则 else 语句块不会执行。
for i in range(3):
    print(i)
else:
    print("循环正常结束")

输出:

0
1
2
循环正常结束

在这个例子中,else 部分在 for 循环完成后执行,因为循环没有被 break 中断。

但是如果存在break,else里面的代码并不会执行

pass关键字

pass是为了使空结构的结构体能够顺利通过解释器编译的关键字,可以在循环结构、分支结构、函数类等结构中使用 

li = ["hello","你好","哈哈大笑","吃饭","123"]
for i in li:
    if i == "吃饭":
        print("不表演了,妈妈叫你吃饭了!!!")
        break
    elif i == "你好":
        pass

3.7 列表生成式

在python里面,我们经常要从一个squence类型的对象里产生一个list。假设下面是某部门人员税前工资表:

[10000,12000,20000,8500,5500,13000]

那现在我们要计算一下税收工资列表,需要把里面的所有元素乘以95%(假设个税为5%),该怎么做?

#已有知识实现
pay = [10000,12000,20000,8500,5500,13000]
pay_list = []
for one in pay:
pay_list.append(one*0.95)
print(pay_list)

但是python里面提供了,更加简单的写法 

pay = [10000,12000,20000,8500,5500,13000]
pay_list = [one*0.95 for one in pay]
print(pay_list)

 D:\tools\Python37-32\python.exe H:/woniuxy/pytestlearn/day03/list.py
  [9500.0, 11400.0, 19000.0, 8075.0, 5225.0, 12350.0]

上述这种写法术语:List comprehensions。而且还支持过滤部分元素生成新的列表。它的完整语法如下:

[expr for iter_var in iterable if cond_expr]

比如上面薪资我们只想计算大于等于10000的那些,怎么计算  

pay_list = [one*0.95 for one in pay if one >= 10000]
print(pay_list)
posted @ 2019-07-17 19:30  酒剑仙*  阅读(789)  评论(0编辑  收藏  举报