• 扎实基础深入篇(六):while循环带动生产力


    在本篇博客中,你将学习如何让程序不断地运行,让用户能够根据需要输入信息,并在程序中使用这些信息。

    为此,你需要使用wile循环让程序不断地运行,直到指定的条件不满足为止。

    注意:在学习循环的路上,一定要学会刹车!

    在进入本篇博客学习之前,我们需要解决一下上篇博客留下来的作业:

    创建一个名为cities的字典,其中将三个城市名用作键,对于每个城市的所属省份、人口数、是否为省会等等创建一个字典作为值。

    然后以更为直观的形式打印出这些信息在输出窗口。

    cities = {
        "咸宁": {
            '省份': '湖北',
            '人口': 6158080,
            '省会': '武汉',
            },
        "宁波": {
            '省份': '浙江',
            '人口': 11760024,
            '省会': '杭州',
            },
        '宝鸡': {
            '省份': '陕西',
            '人口': 1003285,
            '省会': '西安',
            }
        }
    
    for city, city_info in cities.items():
        shenfen = city_info['省份']
        renkou = city_info['人口']
        shenghui = city_info['省会']
    
        print("
    " + city+ " is in " + shenfen + ".")
        print("  这座城市的人口有 " + str(renkou) + "人.")
        print("  他所处省份的省会是"+shenghui+".")

    输出结果:

    咸宁 is in 湖北.
      这座城市的人口有 6158080人.
      他所处省份的省会是武汉.

    宁波 is in 浙江.
      这座城市的人口有 11760024人.
      他所处省份的省会是杭州.

    宝鸡 is in 陕西.
      这座城市的人口有 1003285人.
      他所处省份的省会是西安.

    在学习while之前,我们应该接触过input的相关知识,为了更好地学习后面的while循环,我将快速介绍一下input()的知识:

    一.input()

    概念:函数input()让程序暂停,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量中。

    message=input("请告诉我,你想说什么:")
    print(message)

    输出情况(加粗的部分是键盘输入的内容):

    请告诉我,你想说什么:我最帅
    我最帅

    使用函数input()编写一个清晰的程序:

    message=input("请告诉我,你想说什么:")
    a="我听到你说:
    "+message
    print(a)

    输出情况(加粗的部分是键盘输入的内容):

    请告诉我,你想说什么:你是猪
    我听到你说:
    你是猪

    如果提示过长的时候,应该怎么处理?例:

    message=input("尊敬的客户你好,由于本次服务通道出现异常,我们不得不关闭本次系统,现只能转人工服务,你愿意留下你的电话吗:")

    可以看到,提示用户输入的语句过长,这让代码不够好看,在系统中也展现不直观,所以采用的方法应该是:

    将提示输入的语句存储到一个变量中,使用换行符号:

    tips="尊敬的客户你好,由于本次服务通道出现异常,我们不得不关闭本次系统,"
    tips+="
    现只能转人工服务,你愿意留下你的电话吗:"
    message=input(tips)
    print(message)

    输出结果(加粗的部分是键盘输入的内容):

    尊敬的客户你好,由于本次服务通道出现异常,我们不得不关闭本次系统,
    现只能转人工服务,你愿意留下你的电话吗:123456789
    123456789

    处理输入的数据学会使用int()转换

    在python3中,使用input()函数输入的任何东西都是字符串类型,其中不乏数字,善用int()进行转换:

    math=input("请输入一个数字让系统计算它的平方数:")
    value=int(math)**2
    print("转换后的平方数为:",value)

    输出结果(加粗的部分是键盘输入的内容):

    请输入一个数字让系统计算它的平方数:9
    转换后的平方数为: 81

    虽然我们学习的是python3,但市场上很多项目还是pyton2,我们需要了解到关于python2的input(),有什么不同:

    在python2中,提示用户输入的应该使用raw_input(),都被转为字符串类型。

    如果你直接输入input()获取用户输入,python2会解读为python代码,所以往往会报错。

    二.while循环

    (1).while的基础

    ①不会刹车的司机不是好司机

    在使用while循环的时候,新手程序员常常喜欢一写完while就去运行,往往不可避免进入无限循环的可能,

    导致终端在一直快速打印造成程序崩溃。

    当你不幸陷入无限循环的时候,若不考虑损失,建议直接关闭编辑器,此方法最为直接迅速。

    也可以按Ctrl+C终止,也可以关掉显示程序输出的终端窗口

    所以在使用while的时候,一定要善于设置循环的条件,套上一个限制,彻底对无限循环的可能斩草除根。

    ②让用户选择何时退出

    现在来一段极为简单的循环示例:

    num=0
    while num<5:
        print(num)
        num+=1

    输出结果:

    0
    1
    2
    3
    4

    解释:设置num的初始值0,然后在while门口,发现num的值<5,满足条件获取进入资格,然后按照里面的代码办事,出来时num已经变成了1,

    这时候,while彷佛有一种魔力,又像梦境的轮回一样,也没有任何的东西阻止它,于是自行开启了月光宝盒,

    再次回到了while的门口,发现它依旧小于5,于是又进去了,反反复复地轮回。

    直到当它的值成了5,回到while的门口时,发现不再满足进入的条件,这时候梦醒了。

    在下面的博客中,不再对while代码进行解释,请大家自行努力理解!

    现在实现一个简单的复读机,当输入退出复读机时退出程序:

    message=input("来试试复读机吧!说出你想说的话:
    ")
    while message != "退出复读机":
        print(message)
        message=input("来试试复读机吧!说出你想说的话:
    ")

    输出结果(加粗的部分是键盘输入的内容):

    来试试复读机吧!说出你想说的话:
    我真帅
    我真帅
    来试试复读机吧!说出你想说的话:
    你真丑
    你真丑
    来试试复读机吧!说出你想说的话:
    我真没
    我真没
    来试试复读机吧!说出你想说的话:
    退出复读机

    ③在循环中使用continue

    在使用while循环的过程中,有些被循环出来的条件是特殊条件,那么此时你也想做特殊处理,

    使用continue能够让你实现特殊处理的过程,并再回到while,并不影响循环的进行。

    实现一个简单的while让你更加了解continue:

    num=0
    while num<5:
        print(num)
        if num==3:
            print("3刚好是我最喜欢的数字!")
            continue
        num+=1

    输出结果:

    0
    1
    2
    3

    3刚好是我最喜欢的数字!

    3刚好是我最喜欢的数字!

    3刚好是我最喜欢的数字!

    无限循环!!!!!!

    什么?示例代码都弄成无限循环了,那还教个P!

    不着急,这是很多新手写while代码时百分之90都会遇到的误区,并没有彻底理解continue的作用。

    我在上面加粗了一段话,这段话非常重要:

    当你执行continue的时候,要知道,它是直接回到了while,而直接无视了剩下的代码,恰好剩下的代码对循环极为重要,

    在上面的示例代码中,对3进行continue处理后,它错过了num+=1的代码,直接回到了while,造成无限循环,一直停留在3。

    正确的示例:

    num=0
    while num<5:
        print(num)
        if num==3:
            print("3刚好是我最喜欢的数字!")
            num+=1
            continue
        num+=1

    输出结果:

    0
    1
    2
    3
    3刚好是我最喜欢的数字!
    4

    希望大家通过一错一对的代码示范加深对continue的理解。

     

    ④使用break退出循环

    有了上面的continue教学之后,再来理解break就不难了:

    break也可以说是特殊处理的手段,但是特殊处理之后,直接退出了while循环。

    不多说,还是一样的示例来理解:

    num=0
    while num<5:
        print(num)
        if num==3:
            print("晦气,这是我最讨厌的数字,我走了!")
            num+=1
            break
        num+=1

    输出结果:

    0
    1
    2
    3
    晦气,这是我最讨厌的数字,我走了!

    (2).while来处理列表和字典

    ①在列表之间移动元素

    我们知道,对于布尔表达式来说,空列表,空元组,空集合等空值,都是False。

    如果一个列表list_1含有元素,它的布尔值是True,那么while list_1是不是就是while True,

    那么,如果这个列表突然变成了空列表,while list_1是不是变成了while False,循环就终止了?

    从这个思路出发,我们有下列代码实现:

    print("公司给出了一批游戏测试名单,要求你全部测试一遍。")
    print("这些游戏是穿越火线,QQ飞车,英雄联盟,地下城与勇士,枪火游侠。")
    game_list=['穿越火线','QQ飞车','英雄联盟','地下城与勇士','枪火游侠']
    finish_list=[]
    while game_list:
        game=game_list.pop(0)
        print("现在你要测试的游戏是:",game)
        state=input("你正在测试中……测试完毕时请按回车")
        print(game,"测试完毕,请进入下一个游戏")
        game=game+"已测试完毕"
        finish_list.append(game)
    print(finish_list)

    输出结果:
    公司给出了一批游戏测试名单,要求你全部测试一遍。
    这些游戏是穿越火线,QQ飞车,英雄联盟,地下城与勇士,枪火游侠。
    现在你要测试的游戏是: 穿越火线
    你正在测试中……测试完毕时请按回车
    穿越火线 测试完毕,请进入下一个游戏
    现在你要测试的游戏是: QQ飞车
    你正在测试中……测试完毕时请按回车
    QQ飞车 测试完毕,请进入下一个游戏
    现在你要测试的游戏是: 英雄联盟
    你正在测试中……测试完毕时请按回车
    英雄联盟 测试完毕,请进入下一个游戏
    现在你要测试的游戏是: 地下城与勇士
    你正在测试中……测试完毕时请按回车
    地下城与勇士 测试完毕,请进入下一个游戏
    现在你要测试的游戏是: 枪火游侠
    你正在测试中……测试完毕时请按回车
    枪火游侠 测试完毕,请进入下一个游戏
    ['穿越火线已测试完毕', 'QQ飞车已测试完毕', '英雄联盟已测试完毕', '地下城与勇士已测试完毕', '枪火游侠已测试完毕']

    ②使用用户输入来填充字典

    本次示例代码结合了上期博客所讲到的知识点,能够起到复习巩固的作用:

    responses={}
    
    #设置一个标志,指出调查是否继续
    polling_active=True
    while polling_active:
        #提示输入被调查者的名字和回答
        name=input("
    你的名字是什么?")
        response=input("你最喜欢的游戏是什么?")
        #将答卷存储在字典中
        responses[name]=response
    
        #看看是否还能有人参与调查
        repeat=input("你愿意另一个人来回答问题吗?")
        if repeat =="no":
            polling_active=False
    #调查结束,显示结果
    print
    for name,response in responses.items():
        print(name+"最喜欢的游戏是:"+response+".")

    输出结果(加粗的部分是键盘输入的内容):

    你的名字是什么?master
    你最喜欢的游戏是什么?穿越火线
    你愿意另一个人来回答问题吗?yes

    你的名字是什么?paopao
    你最喜欢的游戏是什么?QQ宠物
    你愿意另一个人来回答问题吗?no

    master最喜欢的游戏是:穿越火线.
    paopao最喜欢的游戏是:QQ宠物.

    本篇博客的内容就到这,布置的作业也非常简单:

    编写一个三种没完没了的循环,并写出造成循环的原因,并学会终止无限循环的手段。

    在往后的博客中,将会讲到函数,类,对象等知识,当你看到这句话时,代表你有着决定入门python决心....

    只是作者会在很久以后再更新了,因为我也要去学习,当我彻底掌握函数和类等基础知识的时候,我会再次归来。

    建议你们每过一段时间就复习以往所有博客,确保把这些基础知识变成长期记忆。

  • 相关阅读:
    django template extends
    python sys.path的用法
    django form 显示
    django form 验证
    WingIDE 下载,介绍和配置
    python startswith
    django reverse()
    python 动态创建类
    django form 定义
    如何学习python
  • 原文地址:https://www.cnblogs.com/Masterpaopao/p/10332049.html
Copyright © 2020-2023  润新知