Python快速精通3 - 流程控制

(一)顺序结构

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

(二)分支结构

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

分支形式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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行...
    穷人家的孩纸阅读 700评论 1 1
  • [The Swift Programming Language 中文版]本页包含内容: Swift提供了多种流程控...
    风林山火阅读 564评论 0 0
  • 思考:平常针对业务需求编写的代码通常以行为单位,那么代码的执行逻辑是什么样子的呢? 引入:正常情况下,代码就是按照...
    好像在哪见过你丶阅读 647评论 0 0
  • Swift提供了多种控制流声明。包括while循环来多次执行一个任务;if,guard和switch声明来根据确定...
    BoomLee阅读 1,944评论 0 3
  • 控制流 [TOC] Swift提供了多种流程控制结构,包括可以多次执行任务的while循环,基于特定条件选择执行不...
    伍哥___阅读 508评论 0 0