欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python中的分支和循环

程序员文章站 2022-04-06 15:08:07
...

使用编程语言编写代码时,难免不遇到需要做逻辑判断或者循环处理事件的时候,有时还需要结合逻辑判断和循环体,在Python中也有相应的支持,和其它语言一样,也是for、if、while语句,只是用法稍微有区别,这篇文章讲解的具体内容有:

  • for循环
    1. for_each方式
    2. enumerate方式
    3. 索引迭代方式
    4. for循环嵌套
    5. for … else用法
    6. break用法
    7. continue用法
  • if条件语句
    1. if-elif-else方式
    2. if表达式中的小技巧
  • while循环体
    1. 有限循环
    2. 无限循环
    3. while循环嵌套
    4. while...else用法

for循环

for_each方式
  1. 遍历字符串时,会把字符串中的每个字符遍历出来:
str = 'hello!'
for x in str:
    print x

打印结果:

h
e
l
l
o
!
  1. 遍历列表时,会把列表中的每个元素遍历出来:
list = ['hello', 'world']
for x in list:
    print x

打印结果:

hello
world
  1. 遍历字典时,会把字典中的每个key值遍历出来:
dict = {'a': 'hello', 'b': 'world'}
for x in dict:
    print x

打印结果:

a
b
enumerate方式

有时候我们希望遍历一个列表时,把对应的下标也获取到,这时可以用到enumerate:

names = ['lilei', 'xiaoming', 'zhangdan']
for index, name in enumerate(names):
    print (index, name)

打印结果:

(0, 'lilei')
(1, 'xiaoming')
(2, 'zhangdan')

思考:如何遍历字典中对应的key和value呢?

info = {'lilei': '170', 'xiaoming': '175', 'zhangdan': '165'}
for key, value in info.items():
    print (key, value)

打印结果:

('lilei', '170')
('xiaoming', '175')
('zhangdan', '165')

索引迭代方式

遍历列表,依然可以使用取下标方式获取元素值,此时借助range()/xrange()函数:

fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
    print fruits[index]

打印结果:

banana
apple
mango

for循环嵌套

像很多其它语言一样,Python也是支持循环体嵌套的,嵌套个数不限,这里只举嵌套两层的例子:

heights = ['170', '175', '180']
weights = ['55', '57', '60']
for height in heights:
    for weight in weights:
        print 'probability:' + height, weight

打印结果:

probability:170 55
probability:170 57
probability:170 60
probability:175 55
probability:175 57
probability:175 60
probability:180 55
probability:180 57
probability:180 60

for … else用法

for … else它表达了这样的功能,当for循环体正常执行完时,它执行else里的代码块,当用break中断循环时,它不会执行else里的代码:

a = [1, 2, 3, 4, 5]
for x in a:
    if x == 3:
        print '执行了break'
        break
else:
    print '执行了else'

打印结果:

执行了break

break用法

break代表立即中断当前循环体,即忽略掉当前循环体后序过程,当有多层循环体嵌套时,并不影响上一层循环:

heights = ['170', '175', '180']
weights = ['55', '57', '60']
for height in heights:
    for weight in weights:
        if height == '175':
            break
        print 'probability:' + height, weight

打印结果:

probability:170 55
probability:170 57
probability:170 60
probability:180 55
probability:180 57
probability:180 60

continue用法

continue代表立即跳过当前循环体正在执行的过程,执行当前循环体的下一个执行过程:

heights = ['170', '175', '180']
weights = ['55', '57', '60']
for height in heights:
    for weight in weights:
        if weight == '57':
            continue
        print 'probability:' + height, weight

打印结果:

probability:170 55
probability:170 60
probability:175 55
probability:175 60
probability:180 55
probability:180 60

if条件语句

if-elif-else方式

很多语言中都有if-else if-else语句,在Python中只是把else if简写成了elif,功能还是一样的,但是Python中并没有switch-case语句,切记,以下给出if-elif-else例子:

names = ['lilei', 'xiaoming', 'zhangdan']
height = 0
for name in names:
    if name == 'lilei':
        height = '170'
    elif name == 'xiaoming':
        height = '175'
    elif name == 'zhangdan':
        height = '180'
    else:
        pass
    print height

pass代表什么也不做,占位用
打印结果:

170
175
180

if表达式中的小技巧

  1. 当if语句中需要判断多个条件时,如何写呢,可以用关键字and表示所有条件都满足,或者用关键字or表示满足其中一个条件:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for x in a:
    if x > 2 and x < 5:
        print x

打印结果:

3
4

当然可以更简洁点写:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for x in a:
    if 2< x < 5:
        print x
  1. 如何判断一个字符串包含某个字符:
b = 'hello'
if 'o' in b:
    print 'True'
else:
    print 'False'

打印结果:

True
  1. 如何判断一个列表中包含某个元素:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
if 1 in a:
    print 'True'
else:
    print ‘False’

打印结果:

True

当列表中元素为其它类型时,也是同样用法

while循环体

有限循环

打印从0到99个数:

i = 0
while i < 100:
    print i
    i += 1

无限循环

一直打印‘ha’,这里的1也可以改成True或者不为空的字符串、列表、字典

while 1:
    print 'ha'

while循环嵌套

while循环嵌套和上面所说到的for循环嵌套类似:

i = 1
while i < 3:
    j = 1
    while j < 3:
        print i * j
        j += 1
    i += 1

打印结果:

1
2
2
4

while循环体还可以和for循环体相互嵌套:

for i in range(1,3):
    j = 1
    while j < 3:
        print i * j
        j += 1

打印结果:

1
2
2
4

while...else用法

while...else用法和上面说到的for...else用法类似:

a = [1, 2, 3, 4, 5]
i = 1
while i < 5:
    if i == 3:
        print '执行了break'
        break
    i += 1
else:
    print '执行了else'

打印结果:

执行了break