小马哥的Python专题

Python快速精通3 - 流程控制

2019-05-27  本文已影响53人  小马哥China

(一)顺序结构

从上到下一行行执行,没有任何判断和跳转

(二)分支结构

使用布尔表达式或布尔值作为分支条件来进行分支控制

分支形式1:

if 布尔判断:
语句块
例如: 公园门口对游客国籍身份进行判断,如果是岛国人,不让进

nationality = input('What is your nationality?')
if nationality == 'Japan':
    print('Please go away!')
What is your nationality?xxx

分支形式2:

nationality = input('What is your nationality?')
if nationality == 'Japan':
    print('Please go away')
else:
    print('Welcome...')
    
What is your nationality?xxx
Welcome...

分支形式3:

nationality = input('What is your nationality?')
if nationality == 'Japan':
    print('Japan and Dog,Please go away!')
elif nationality == 'Dog':
    print('Japan and Dog,Please go away!')
else:
    print('Welcome...')
What is your nationality?xxx
Welcome...

if表达式 (类似其它编程语言的三目运算符)

age = 20
man = '青少年' if age<18 else '成年人'
print(man)
成年人

断言(也是一种分支控制)

断言是这样的结构
assert bool表达式 <- -在这里为True才会往下继续执行,否则会抛出一个AssertionError错误

age = 18
assert 18<=age<=80
print('是成年人了,可以单独旅行.')
是成年人了,可以单独旅行.

(三)循环结构

  1. while循环
  2. for循环

3.1 while循环

语法形式
while 循环条件:
循环体

while循环在每次执行循环体之前,对"循环条件"进行判断,如果循环条件为真,则执行循环体部分;
循环体一般包括: 要执行的功能,另外一般包括对循环条件的控制,如果没有对循环条件的控制,这个循环就会无限执行下去,成为死循环

下面分别举例:
例,银行账户登录,如果连续输入错误三次,账户锁定

password = '123456'
errorTimes = 0
while errorTimes<3:
    passwd = input('请输入账户密码: ')
    if passwd==password:
        print('密码验证通过,业务逻辑完成!')
        errorTimes=0
        break
    else:
        errorTimes+=1
        msg = '密码错误次数到达3次,账户锁定.'if errorTimes==3 else '密码错误{0}次!'.format(errorTimes)
        print(msg)
        
请输入账户密码: 123456
密码验证通过,业务逻辑完成!

例,通过while循环遍历列表(元组一样)

language = ['C','C++','Java','Python','JavaScript','Scala','Swift','kotlin','R','Julia']
index=0
while index<len(language):
    print('Index: {0},\t Element: {1}'.format(index,language[index]))
    index+=1
Index: 0,    Element: C
Index: 1,    Element: C++
Index: 2,    Element: Java
Index: 3,    Element: Python
Index: 4,    Element: JavaScript
Index: 5,    Element: Scala
Index: 6,    Element: Swift
Index: 7,    Element: kotlin
Index: 8,    Element: R
Index: 9,    Element: Julia

例,猜数字(提示大小)

result = 99
times = 0
while times<7:
    number = int(input('请输入一个数字:'))
    if number>result:
        times+=1
        print('猜大了,还有{0}次机会'.format(7-times))
    elif number<result:
        times+=1
        print('猜小了,还有{0}次机会'.format(7-times))
    else:
        times+=1
        print('结果正确,用了{0}次机会猜到正确结果'.format(times))
        break

总之,循环会自动在每次执行循环体之前判断一下循环条件是否为True,来决定是否执行循环体.while循环适用于,不确定次数的循环,例如,我不清楚将要进行多少次尝试才会猜中数字,但是我只有一个边界条件,那就是小于7次,那就交给while自己去判断边界条件吧.

3.2 for循环

for循环用于遍历可迭代的对象
可迭代对象: 列表list,元组tuple,字典dict,集合set,字符串string,区间range都属于可迭代对象
先初步了解一下,可迭代对象中包含一个iter方法,该方法返回值一个对象实例,包含next()方法语法形式
for 变量(循环计数器) in 可迭代对象:
循环体

变量: 在每次循环中,自动被赋值,这个值就是可迭代对象中的每一个元素.
例,计算阶乘

num_input = input('Please input a number:')
nums = int(num_input)
result = 1
for i in range(1,nums+1):
    result*=i
print('Factorial is: {0}'.format(result))
Please input a number:5
Factorial is: 120
上一篇 下一篇

猜你喜欢

热点阅读