码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 北理工嵩天Python语言程序设计笔记(5 程序的控制结构)


    前言

    本文是对《北理工 嵩天/黄天宇/礼欣 Python语言程序设计》的学习笔记,供自己查阅使用。

    文章目录

    1. 北理工嵩天Python语言程序设计笔记(目录)
    2. 北理工嵩天Python语言程序设计笔记(2 Python基本语法元素)
    3. 北理工嵩天Python语言程序设计笔记(3 Python基本图形绘制)
    4. 北理工嵩天Python语言程序设计笔记(4 基本数据类型)
    5. 北理工嵩天Python语言程序设计笔记(5 程序的控制结构)
    6. 北理工嵩天Python语言程序设计笔记(6 函数和代码复用)
    7. 北理工嵩天Python语言程序设计笔记(7 组合数据类型)
    8. 北理工嵩天Python语言程序设计笔记(8 文件和数据格式化)
    9. 北理工嵩天Python语言程序设计笔记(9 程序设计方法学)
    10. 北理工嵩天Python语言程序设计笔记(10 Python计算生态概览)

    笔记目录

    • 前言
    • 文章目录
    • 5 程序的控制结构
      • 5.1 程序的分支结构
        • 5.1.1 单二多分支结构
        • 5.1.2 条件判断及组合
        • 5.1.3 程序的异常处理
      • 5.2 实例5: 身体质量指数BMI
      • 5.3 程序的循环结构
        • 5.3.1 遍历循环
        • 5.3.2 无限循环
        • 5.3.3 循环控制保留字
        • 5.3.4 循环的高级用法
      • 5.4 模块3: random库的使用
        • 5.4.1 random库基本介绍
        • 5.4.2 基本随机数函数
        • 5.4.3 扩展随机数函数
      • 5.5 实例6: 圆周率的计算


    5 程序的控制结构

    5.1 程序的分支结构

    5.1.1 单二多分支结构

    • 单分支结构

      if <条件> :
      <语句块>

    • 二分支结构

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

    • 二分支结构紧凑形式:适用于简单表达式的二分支结构

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

      print("猜{}了".format("对" if guess==99 else "错"))
      
      • 1
    • 多分支结构:

      if <条件1> :
      <语句块1>
      elif <条件2> :
      <语句块2>
      ……
      else:
      <语句块N>

    5.1.2 条件判断及组合

    • 条件判断

    <,<=,>=,>,==,!=

    • 条件组合

    x and y,x or y,notx

    5.1.3 程序的异常处理

    • 异常处理的基本使用:

    try:
    <语句块1>
    except :
    <语句块2>

    try :
    	num= eval(input("请输入一个整数: "))
    	print(num**2)
    except :
    	print("输入不是整数")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    try:
    <语句块1>
    except <异常类型> :
    <语句块2>

    try :
    	num= eval(input("请输入一个整数: "))
    	print(num**2)
    except NameError:
    	print("输入不是整数")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    标注异常类型后,仅响应此类异常,异常类型名字等同于变量名。

    • 异常处理的高级使用

      try:
      <语句块1>
      except :
      <语句块2>
      else :
      <语句块3>
      finally :
      <语句块4>

    else对应语句块3在不发生异常时执行,finally对应语句块4一定执行

    5.2 实例5: 身体质量指数BMI

    • BMI:Body Mass Index
      国际上常用的衡量人体肥胖和健康程度的重要标准,主要用于统计分析

    • 定义:BMI = 体重(kg) / 身高2(m2)

    height, weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开]: "))
    bmi = weight / pow(height, 2)
    print("BMI 数值为:{:.2f}".format(bmi))
    who, nat = "", ""
    if bmi < 18.5:
        who, nat = "偏瘦", "偏瘦"
    elif 18.5 <= bmi < 24:
        who, nat = "正常", "正常"
    elif 24 <= bmi < 25:
        who, nat = "正常", "偏胖"
    elif 25 <= bmi < 28:
        who, nat = "偏胖", "偏胖"
    elif 28 <= bmi < 30:
        who, nat = "偏胖", "肥胖"
    else:
        who, nat = "肥胖", "肥胖"
    print("BMI 指标为:国际'{0}', 国内'{1}'".format(who, nat))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    5.3 程序的循环结构

    5.3.1 遍历循环

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

    for <循环变量> in <遍历结构> :
    <语句块>

    • 计数循环(N次)

      for i in range(N):
      <语句块>

    • 计数循环(特定次)

      for i in range(M,N,K):
      <语句块>

    • 字符串遍历循环:s是字符串,遍历字符串每个字符,产生循环

      for c in s:
      <语句块>

    • 列表遍历循环:ls是一个列表,遍历其每个元素,产生循环

      for item in ls:
      <语句块>

    • 文件遍历循环:fi是一个文件标识符,遍历其每行,产生循环

      for line in fi:
      <语句块>

    5.3.2 无限循环

    反复执行语句块,直到条件不满足时结束

    while <条件> :
    <语句块>

    CTRL + C 退出执行

    5.3.3 循环控制保留字

    • break跳出并结束当前整个循环,执行循环后的语句
    • continue结束当次循环,继续执行后续次数循环
    • break仅跳出当前最内层循环

    5.3.4 循环的高级用法

    • 循环与else

      for <变量> in <遍历结构> :
      <语句块1>
      else:
      <语句块2>

      或

      while <条件> :
      <语句块1>
      else:
      <语句块2>

    • 当循环没有被break语句退出时,执行else语句块

    • else语句块作为"正常"完成循环的奖励

    for c in "PYTHON":
    	if c == "T":
    		continue
    	print(c, end="")
    else:
    	print("正常退出")
        
    >>> PYHON正常退出
    
    for c in "PYTHON":
    	if c == "T":
    		break
    	print(c, end="")
    else:
    	print("正常退出")
        
    >>> PY
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    5.4 模块3: random库的使用

    5.4.1 random库基本介绍

    • random库是使用随机数的Python标准库
    • 伪随机数: 采用梅森旋转算法生成的(伪)随机序列中元素
    • random库主要用于生成随机数
    • 使用random库: import random

    5.4.2 基本随机数函数

    随机数种子,随机序列
    在这里插入图片描述

    >>>import random
    >>>random.seed(10)
    >>>random.random()
    0.5714025946899135
    >>>random.seed(10)
    >>>random.random()
    0.5714025946899135
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    设置种子,产生的随机数就不变了。

    5.4.3 扩展随机数函数

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    一行好几段代码,用分号

    5.5 实例6: 圆周率的计算

    • 圆周率的近似计算公式

    π = ∑ k = 0 ∞ [ 1 1 6 k ( 4 8 k + 1 − 2 8 k + 4 − 1 8 k + 5 − 1 8 k + 6 ) ] \pi=\sum\limits_{k=0}^{\infty}[\frac{1}{16^k}(\frac{4}{8k+1}-\frac{2}{8k+4}-\frac{1}{8k+5}-\frac{1}{8k+6})] π=k=0∑∞​[16k1​(8k+14​−8k+42​−8k+51​−8k+61​)]

    #CalPiV1.py
    pi = 0
    N  = 100
    for 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))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    代码后面增加斜杠\换行

    • 蒙特卡罗方法
    #CalPiV2.py
    from random import random
    from time import perf_counter
    DARTS = 1000*1000
    hits = 0.0
    start = 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 + 1
    pi = 4 * (hits/DARTS)
    print("圆周率值是: {}".format(pi))
    print("运行时间是: {:.5f}s".format(perf_counter()-start))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    Ehcache(二次封装,每个元素可自定义过期时间)
    改变金融贷款市场营销方式 ---- 运营商大数据精准获客
    基于springboot的大学计算机基础网络教学系统
    内网穿透工具之NATAPP(一)
    数据管理生态的核心解析:数据库、数据仓库、数据湖、数据平台与数据中台的关系与实现
    C语言——结构体(位段)、联合体、枚举
    解密数字经济时代,元宇宙企业如何重塑商业价值?
    CSS3实现动画加载效果
    【每日一题】买卖股票的最佳时机 III
    element UI 组件封装--搜索表单(含插槽和内嵌组件)
  • 原文地址:https://blog.csdn.net/yyywxk/article/details/127692245
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号