Python基础语法-流程控制

今天讲解Python的流程控制,流程控制也比较简单,小白不想整的很复杂,以免让大家看了有一种望“文”生怯的想法。

程序控制结构

通常的程序设计语言有三种控制结构。

顺序结构

代码从上而下顺序执行。

>>> a = 0
>>> a = a + 1
>>> print(a)
1

分支结构

if cond1:
    block1
elif cond2:
    block2

>>> if 1 < 2:
...     print('1 less 2')
...     
... 
1 less 2
>>> print('main block')
main block

分支结构永远只有一个分支会被执行。

循环结构

  1. white语句
  2. for语句

语句结构:

while cond:
    block

一个例子,

>>> a = 0
>>> while a < 10:
...     print(a)
...     a += 1
...     
... 
0
1
2
3
4
5
6
7
8
9

通常在while循环中,循环体中需要修改条件,以使得条件为假。

循环中可以使用break及continue关键字,以使循环得以停止或继续下一轮循环:

>>> a = 0
>>> while a < 10:
...     if a == 5:
...         break
...     else:
...         print(a)
...         a += 1
...     
... 
0
1
2
3
4

for循环,

for element in iterator:
    block

循环体中绝对不要修改可迭代对象。如下的代码可能会导致机器死机或重启,

lst = range(0, 10)

for i in lst:
    lst.append(i)

结构可以嵌套的,

>>> for i in range(0, 10):
...     if i % 2 == 0:
...         print(i)
...         
...     
... 
0
2
4
6
8

break用于提前结束循环。continue用于跳过之后的语句。

break的示例,

>>> for i in range(0, 10):
...     print(i)
...     if i > 3:
...         break
...         
...     
... 
0
1
2
3
4

continue的示例,

>>> for i in range(0, 10):
...     if i == 3:
...         continue
...     print(i)
...     
... 
0
1
2
4
5
6
7
8
9

示例

求素数,

a = 7
for i in range(2, a):
    if a % i == 0:
        break
else:
    print('yes')

循环结构中else子句判断循环有没有提前退出,如果提前退出了,else子句不执行,如果没有提前退出,执行else。

多重循环,

is_break = False
for i in range(0, 10):
    for x in range(0, 10):
        if x >= 3:
            is_break = True
            break
        print('x = {0}'.format(x))
    if is_break:
        break

x = 0
x = 1
x = 2

一段小代码,

NUM = 35

for _ in range(0, 3): # 这里的下划线表示,不需要使用到该变量
    user_input = int(input('pls input a number: '))
    if user_input == NUM:
        print('you win')
        break
    elif user_input < NUM:
        print('less')
    else:
        print('big')
else:
    print('you lose')

打印杨辉三角,

import math

for n in range(0, 10):
    if n == 0:
        print(1)
    else:
        for m in range(0, n+1):
            num = math.factorial(n) // (math.factorial(m) * math.factorial(n-m))
            print(num, end=' ')
        print()

1
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1

打印2到100的素数,

for n in range(2, 101):
    for x in range(2, n):
        if n % x == 0:
            break
    else:
        print(n)

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

今日回顾

今天主要讲解了三种程序流程控制:

  • 顺序结构
  • 分支结构
  • 循环结构

总体来说,三种流程控制结构不是很难,稍加练习,结合前面所学的知识点,就可以写出一般的Python程序了。

原文发布于微信公众号 - 小白的技术客栈(XBDJSKZ)

原文发表时间:2017-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spark学习技巧

SparkSql的优化器-Catalyst

一,概述 为了实现Spark SQL,基于Scala中的函数编程结构设计了一个新的可扩展优化器Catalyst。Catalyst可扩展的设计有两个目的。 首先,...

2099
来自专栏斑斓

Scala的面向对象与函数编程

很难说FP和OO孰优孰劣,应该依场景合理选择使用。倘若从这个角度出发,Scala就体现出好处了,毕竟它同时支持了OO和FP两种设计范式。 从设计角度看,我认为O...

2955
来自专栏owent

Boost.Spirit 初体验

使用代码生成代码是一件十分美妙的事情,于是有了各种代码生成器。但是生成代码,意味着要有对生成规则的分析和处理。 Boost.Spirit 就是这么一个语法分析...

631
来自专栏机器学习实践二三事

Redis数据结构

主要内容来源于书籍Redis实战(Redis In Action),这篇只是用来记录自己学习的过程,因为刚学所以很浅显,适合初学者哈 Redis数据结构 5种数...

1829
来自专栏java一日一条

关于 hashCode() 你需要了解的 3 件事

在 Java 中,每一个对象都有一个容易理解但是仍然有时候被遗忘或者被误用的 hashCode 方法。这里有3件事情要时刻牢记以避免常见的陷阱。

332
来自专栏枕边书

设计模式,Let's “Go”! (下)

前言 接上篇 设计模式,Let's “Go”! (中), 继续更新设计模式,今天介绍的设计模式有责任链模式、蝇量模式、解释器模式、中介者模式、备忘录模式、原型模...

1566
来自专栏程序员互动联盟

【编程基础】C++异常处理简介

遗憾的是,在实践中人们通常会忽略出错情况,就好像程序处在一个无错误的状态下进行工作的。毫无疑问,导致上述问题的一个原因就是,检测错误是一个乏味的工作并且导致代码...

2595
来自专栏恰同学骚年

设计模式的征途—2.简单工厂(Simple Factory)模式

  工厂模式是最常用的一种创建型模式,通常所说的工厂模式一般是指工厂方法模式。本篇是是工厂方法模式的“小弟”,我们可以将其理解为工厂方法模式的预备知识,它不属于...

744
来自专栏小樱的经验随笔

【python进阶】Garbage collection垃圾回收1

前言 GC垃圾回收在python中是很重要的一部分,同样我将分两次去讲解Garbage collection垃圾回收,此篇为Garbage collection...

2697
来自专栏魂祭心

原 GetHashCode重写指南(译文)

3336

扫描关注云+社区