博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python程序的流程控制结构
阅读量:3957 次
发布时间:2019-05-24

本文共 2771 字,大约阅读时间需要 9 分钟。

文章目录

一. 程序的顺序结构

按顺序执行每一步骤,每条语句都会且仅会执行一次

在这里插入图片描述

二. 程序的分支结构

注:else语句可有可无,都不会报错

1. 单分支结构

根据判断条件结果而选择不同向前路径的运行方式

语法:

if 条件:	语句块

在这里插入图片描述

2. 二分支结构

(1). 基本形式

语法:

if 条件:	语句块1else:	语句块2

在这里插入图片描述

判断回文字符串str = input("请输入字符串:")if(str == str[::-1]):	print(str + "为回文串")else:	print(str + "不是回文串")

(2). 紧凑形式

适用于简单表达的二分支结构

语法:

表达式1 if 条件 else 表达式2

在这里插入图片描述

3. 多分支结构

基本语法:

if 条件1:	语句块1elif 条件2:	语句块2	...else:	语句块n

在这里插入图片描述

身体质量指数BMIheight, weight = eval(input("请输入身高(米)和体重(kg)[逗号隔开]:"))bmi = weight / pow(height, 2)print("BMI 数值为:{:.2f}".format(bmi))who = ""if bmi < 18.5:    who = "偏瘦"elif 18.5 <= bmi <24:    who = "正常"elif 24 <= bmi < 28:    who = "偏胖"else:    who = "肥胖"print("BMI指数为:国内'{0}'".format(who))

4. 条件判断及组合

在这里插入图片描述

在这里插入图片描述

5. 程序的异常处理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三. 程序的循环结构

一个程序的主要运行时间都花在了循环上

1. 遍历循环:for语句

(1). 概述

遍历某个结构形成的循环运行方式

基本语法:

for 循环变量 in 遍历结构(迭代器):	语句块

作用:

从遍历结构中逐一提取元素,放在循环变量中

特点:

由保留字for和in组成,完整遍历所有元素和结束每次循环,所获得元素放入循环变量,并执行一次语句块

在这里插入图片描述

注:

迭代器是Python语言中的重要机制,一个迭代器描述一个值序列,在for语句中,变量按顺序取得迭代器表示的值序列中的各个值,对每一个值都将执行语句块一次

(2). 应用

1. range()函数生成迭代器

range()函数是Python语言中的一个内置函数,调用这个函数就能产生一个迭代序列

  1. range(n)

    得到一个迭代序列:0 1 2 3 4…n-1

    当n<=0时候序列为空
  2. range(m, n)

    得到的跌打序列为:m, m+1, m+2, … n-1

    当m>=n的时候序列为空
  3. range(m, n, d)

    得到的序列为:m, m+d, m+2d, … ,

    按步长值d递增,如果d是负数则递减,直至那个最接近但不包括n的等差值

    可能产生空序列
计数循环(N次)

循环范围:0到N-1次

在这里插入图片描述

计数循环(特定次)

循环范围:从M到N-1,步长为K

在这里插入图片描述

2. 字符串作为迭代器

字符串遍历循环

在这里插入图片描述

for s in "abcde":	print(s, end=" ")结果为:a b c d e
统计英文句子中大写字符、小写字符、数字字符的个数str = input("请输入一句英文:")count_upper = 0count_lower = 0count_didit = 0for s in str:    if s.isupper(): count_upper = count_upper+1    if s.islower(): count_lower = count_lower+1    if s.isdigit(): count_didit = count_didit+1print("大写字符:", count_upper)print("小写字符:", count_lower)print("数字字符:", count_didit)

3. 列表作为迭代器

列表遍历循环

在这里插入图片描述

4. 文件作为迭代器

文件变量循环

在这里插入图片描述

2. 无限循环

(1). 概述

由条件控制的循环运行方式

用一个表示逻辑条件的表达式来控制循环,当条件成立的时候反复执行循环体,直到条件不成立的时候循环结束

基本语法:

while 条件:	语句块

特点:

先求表达式的值,如果值为True就反复执行循环体语句块,直到条件不满足时结束

在这里插入图片描述

求非负数字序列中的最大值、最小值、平均值count = 0total = 0print("请输入一个非负整数,以-1作为输入结束!")num = int(input("输入数据:"))min = nummax = numwhile(num != -1):    count += 1    total += num    if num
max: max = num num = int(input("输入数据:"))if count>0: print("最小{}, 最大{}, 均值{:.2f}".format(min,max,total/count))else: print("输入为空")

3. 循环控制保留字

在这里插入图片描述

注:break仅跳出当前最内层循环
在这里插入图片描述

4. 循环的高级用法

(1). 循环的扩展

在这里插入图片描述

在这里插入图片描述

5. 实例:圆周率的计算问题

分析圆周率的计算方法

1. 圆周率的近似计算公式

在这里插入图片描述

pi = 0N = 100for k in range(N):    pi += 1/pow(16,k)*(\        4/(8*k+1) - 2/(8*k+4) - \        1/(8*k+5) - 1/(8*k+6))print("圆周率值是:{}".format(pi))

结果为:圆周率值是:3.141592653589793

2. 蒙特卡罗方法(进行随机撒点)

在这里插入图片描述

from random import randomfrom time import perf_counterDARTS = 1000*1000hits = 0.0start = perf_counter()for i in range(1,DARTS+1):    x, y = random(), random()    dist = pow(x**2 + y**2, 0.5)    if dist <= 1.0:        hits = hits + 1pi = 4*(hits/DARTS)print("圆周率值是:{}".format(pi))print("运行时间是:{:.5f}s".format(perf_counter()-start))

结果是:

圆周率值是:3.143824
运行时间是:1.10215s

转载地址:http://smxzi.baihongyu.com/

你可能感兴趣的文章
JDK工具
查看>>
JDK工具
查看>>
JNA-JNI升级版
查看>>
JNA-JNI升级版
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>