资讯专栏INFORMATION COLUMN

Python入门-控制流

silvertheo / 3335人阅读

摘要:返回索引页控制流分支结构循环结构和总结练习参考控制流上一张我们了解了的基本语法和数据结构。和后必须加判断表达式,一般表达式返回值为布尔型,当非布尔型时,表示该值是否存在。语句以英文冒号结尾逻辑代码块以个空格或分隔。

< 返回索引页

控制流

分支结构

if/elif/else

循环结构

for

while

break 和 continue

pass

总结

练习

参考

控制流

上一张我们了解了Python的基本语法和数据结构。到目前位置,我们编写的代码都是一行一行的由上往下一次执行的。我们叫这种形式的代码为顺序结构。但是在真正的编码环境中,这种顺序结构实现的场景有限。下面我们来看下Python编程中的一些其他复杂控制结构。

分支结构

试想,一个简单的计算器的计算过程,当我们按下加号键的时候,它会执行相加操作;当我们按下减号的时候,它则会执行减法操作。这并产生了2个分支,它根据我们的输入这个未知的条件来决定该走那个分支。像这种根据某条件来判断走那个分支的结构叫做分支结构

if/elif/else

Python 中使用关键字ifelseelif 来实现分支结构。下面我们来看下它们的语法:

# -*- coding:utf-8 -*- 
# calculator.py

a, b = 2, 3 
sign = input("请输入运算符:")
if sign == "+":  # 判断条件
    print(a+b)   # 逻辑代码块
elif sign == "-":
    print(a-b)
else:
    print("暂不支持该符号!")

语法说明:

Python 中分支结构中判断条件以英文冒号 : 结尾;

分支结构中的逻辑代码块,以相对于条件语句向右4个空格或1个tab为分隔符,建议使用4个空格,tab在不同系统表现不一致可能引起混了,影响代码的跨平台性。

ifelif 后必须加判断表达式,一般表达式返回值为布尔型,当非布尔型时,表示该值是否存在。

我们在输入运算符时,需要使用引号引起来,因为多带带的一个运算符是会报错的。

if 可多带带使用,也可多带带和elifelse 配合使用。

# if 多带带使用
if "1":
    print("这是真的")
# if 和 else 配合使用
if False:
    print("这是假的")
else:
    print("这是真的")
# if 和 elif 配合使用
if False:
    print("这是假的")
elif True:
    print("这是真的")

条件语句可嵌套使用。

# -*- coding:utf-8 -*- 
# nesting_if.py 
a = int(input("请输入:"))

if a > 4:
    if a < 10:
        print("大于4,小于10")
    else:
        print("大于10")
else:
    print("小于4")

条件语句有一种简便的写法,被称为三元操作符

a = "上午好" if now_time < 12 else "下午好" 
循环结构

上一章我们还学习了列表,那当我们要想依次去除列表中的元素时,便需要来循环依次取出,这种循环操作的结构叫做循环结构

for

Python 中使用关键字 for 来实现已知长度的循环。用法如下:

l = [1,2,3,4,5]
sum = 0 
for i in l :
    sum += i
print(sum)

语法说明:

for 使用关键字in 来遍历序列,获取其元素,有变量i 来表示,以便在之下的逻辑代码块中使用。

for 语句以英文冒号结尾

逻辑代码块以4个空格或tab分隔。

for 循环也是可以嵌套使用的。

for 还可遍历成组元素的序列,如下:

l = [(1,2),(1,3),(1,4)]
for i, j in l:
    print(i)
    print(j)

在Python中提供了一个内置函数 range(start,length,step)来专门生成用来遍历的整数序列,其返回值为迭代器(可理解为列表对象,后边会讲解)。start为开始整数,可省略,省略时默认为0;length为结束整数,但不包含自己;step 为步长,及2个整数之间的间隔,可省略,省略时默认为1。使用range函数来改写上边的代码为:

sum = 0
for i in range(1,6):
    sum += i 
print(sum)
while

Python 中还提供了另一种循环语句关键字 while 用来实现满足条件下的一个循环操作。

# loop_while.py
i = 0 
sum = 0
while i <= 5:
    sum += i
    i += 1 
print(sum)
break 和 continue

我们试想,当while的条件永远为真时,会发生什么?while下的逻辑块会被一直执行下去,如果该逻辑段耗费计算机资源的话。计算机资源会被他很快的消耗殆尽。这种情况,我们把它叫做死循环无限循环。这种循环,大多数情况下都是不对的,除非你明确的知道,你就是要使用一个这样的无限循环。Python 中提供了2个关键字breakcontinue,让我们的操作可以跳出无限循环。

break 用法

# while 中使用
sum = 0
while True:
    if sum > 10:
        print("sum已大于10")
        break
    sum += 1 
    print(sum)

# for 中使用
sum = 0 
for i in range(100):
    if sum > 10:
        print("sum已大于10")
        break;
    sum += 1 
    print(sum)

语法说明:

break 语句执行后,直接退出循环,不再循环

continue用法

sum = 0 
for i in range(100):
    if sum > 10:
        print("sum已大于10")
        continue;
    sum += 1 
    print(sum)

语法说明:

continue 语句执行后,当前循环语句之后的语句不再执行,直接跳入下一次的循环继续执行。

pass

有时候,我们的代码块想直接跳过,可使用关键字 pass。它常被用来占位使用。

for i in range(5):
    pass # 占位
总结

本章我们学习了Python的代码逻辑控制流,我们来总结下:

Python代码结构有顺序结构、分支结构和循环结构;

分支结构可使用if/elif/else 实现;

循环结构可使用for/while 实现;

可使用breakcontinue来截断循环结构;

练习

1、 输出乘法口诀表(九九表)

for i in range(1, 10):
    for j in range(1, i + 1):
        print("%d*%d=%d" % (i, j, i * j), end="	")
    print()

2、实现一个简易计算器, 支持 +-*/的运算。

first = int(input("请输入一个数值:"))
sign = input("请输入运算符:")
second = int(input("请输入一个数值:"))
if sign == "+":
    print("%s+%s=%s" % (first, second, first+second))
elif sign == "-":
    print("%s-%s=%s" % (first, second, first-second))
elif sign == "*":
    print("%s*%s=%s" % (first, second, first*second))
elif sign == "/":
    print("%s/%s=%s" % (first, second, first/second))
else:
    print("不支持该运算符")

3、 打印如下三角形图案。

"""
*
**
***
****
*****

    *
   **
  ***
 ****
*****

    *
   ***
  *****
 *******
*********

"""
row = int(input("请输入行数: "))
for i in range(row):
    for _ in range(i + 1):
        print("*", end="")
    print()


for i in range(row):
    for j in range(row):
        if j < row - i - 1:
            print(" ", end="")
        else:
            print("*", end="")
    print()

for i in range(row):
    for _ in range(row - i - 1):
        print(" ", end="")
    for _ in range(2 * i + 1):
        print("*", end="")
    print()

4、实现猜数字游戏, 要求:

计算机出一个1~100之间的随机数由人来猜

计算机根据人猜的数字分别给出提示大一点/小一点/猜对了

import random

answer = random.randint(1, 100)
counter = 0
while True:
    counter += 1
    number = int(input("请输入: "))
    if number < answer:
        print("大一点")
    elif number > answer:
        print("小一点")
    else:
        print("恭喜你猜对了!")
        break
print("你总共猜了%d次" % counter)
if counter > 7:
    print("你的智商余额明显不足")
参考

https://docs.python.org/3.6/tutorial/index.html

https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/Day02/%E8%AF%AD%E8%A8%80%E5%85%83%E7%B4%A0.md

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41959.html

相关文章

  • AWS-Lambda 使用入门

    摘要:例如,控制台使用调用类型,因此当您使用控制台调用函数时,控制台将显示返回的值。如果别名用于调用函数,将为别名指向的版本。 场景:现在需要开发一个前后端分离的应用,后端采用 RESTful API 最为方便,但是如果这个后端服务会在一天中的某些时候有高并发的情况,使用什么样的架构最为简单呢? 刚思考这个问题的时候我想到的解决方案可能有以下几种: 使用CDN内容分发网络,减少主服务器的...

    RobinQu 评论0 收藏0
  • Python入门-前言

    摘要:过去都讲究木桶原理,那块木板短,就去补那块。现在变了,有了新的木桶原理,让那块长木板更长,而短板呢,则交给我们的团队其他小伙伴。 大家好,我是 DeanWu,我是一个不太会交际的人,比起交际,我更喜欢一个人默默的去钻研技术。 最近几年,随着年龄的增大,我决定改变,人类始终是群居生物,个体的力量始终是渺小的,逐渐认识到了团队的重要性。过去都讲究木桶原理,那块木板短,就去补那块。现在变了,...

    cnsworder 评论0 收藏0
  • Spring Boot入门(12)实现页面访问量统计功能

    摘要:在日常的网站使用中,经常会碰到页面的访问量或者访问者人数统计。运行项目,在浏览器中输入显示的页面如下刚载入页面时,显示页面被访问次。当我们将这个这也载入次后,显示如下这样我们就用实现了页面访问量的统计功能。   在日常的网站使用中,经常会碰到页面的访问量(或者访问者人数)统计。那么,在Spring Boot中该如何实现这个功能呢?  我们的想法是比较简单的,那就是将访问量储存在某个地方...

    LeanCloud 评论0 收藏0
  • 图解——PyQt4从入门到运用

    摘要:将程序包装在界面里,可以将输入通过多种途径如文本框弹出路径选择等输入到程序里。将输出通过文本框显示出来将执行信息如如报错信息运行进度通过文本框或进度条显示出来文章安排先介绍安装和配合的使用。 作为一个程序的开发者,我们仅仅需要在相应路径通过命令行就可执行那个程序。但是,不懂行的人不理解这个黑框框的东西,陌生领域任何人都没有安全感,所以他们是拒绝接受一个项目仅仅只是通过一个黑框框来执行的...

    史占广 评论0 收藏0
  • Python gRPC 入门

    摘要:消息格式有三个字段,在消息中承载的数据分别对应于每一个字段。所以应该为那些频繁出现的消息元素保留之内的标识号。示例编译这里我们用编译一下,看得到什么文件名使用以下命令编译生成了两个文件此文件包含生成的和类。 gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 本文通过一个简单的 Hello World 例子来向您介绍 gRPC 。 gR...

    ideaa 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<