Python 用自然语言/流程图描述算法并实现

算法的定义及作用一、导入:编程解决问题的步骤

  1. 分析问题
  2. 划分边界
  3. 设计算法 #importance
  4. 编写程序
  5. 调试测试
  6. 后期维护
注:参考嵩天老师的《Python语言程序设计》
二、生活中的算法问题:饮料换杯两个杯子 , 一杯装可乐 , 一杯装雪碧 , 怎样才能让装可乐的杯子装雪碧 , 装雪碧的杯子装可乐?
再拿一个杯子 。
  1. 设计算法:t=a #第一步a=b #第二步b=t #第三步
  2. 编写代码:
>>> a="可乐">>> b="雪碧">>> t=a>>> a=b>>> b=t>>> print("a=",a,"b=",b)a= 雪碧 b= 可乐1234567完成由算法到程序的过程 。
算法的定义:解决问题的步骤算法是有限步骤内求解某一问题所使用的一组定义明确的规则 。
算法怎么描述一、自然语言描述鸡兔同笼问题我国古代数学著作《孙子算经》中应有“今有雉兔同笼 , 上有三十五头 , 下有九十四足 , 问雉兔各有几和?”
  1. 数学思维:假设法、列方程
  2. 计算思维:穷举法
列举出鸡和兔子只数的组合 , 不断试错 。 试错有止境 。 将鸡的数量定义为变量a , 则兔为35-a , 鸡和兔脚数量的总和是否为94即为程序是否结束的判断标准
二、自然语言描述鸡兔同笼问题算法描述的两个基本要素:初始状态、变化规律 。
  1. 初始状态:最开始尝试的那一组数据(0只鸡、35只兔子)设鸡为变量n , 兔子为变量35-n 。
  2. 变化规律:失败了之后鸡的数量+1 , 兔子的数量-1 。 变化规律n=n+1 。
故:自然语言描述
  1. 假设的鸡的数量为n只;兔的数量为35-n;
  2. n=0;
  3. 如果2n+4(35-n)=94 , 则输出结果n;否则执行步骤4;
  4. n=n+1;
  5. 执行步骤3;
二、流程图描述鸡兔同笼问题:
Python 用自然语言/流程图描述算法并实现文章插图
三、代码实现基础实现:#鸡兔同笼V1:n=0m=35-n#设初值 , 鸡有0只 , 兔子有35只while 0<=n<=35 and 0<=m<=35:if 2*n+4*m == 94:#表判断print("鸡有",n,"只")print("兔有",m,"只")breakelse:n=n+1#鸡的数量加一 , 兔子的数量减一 , 不断试错m=35-n#直到得出正确答案1234567891011运行结果:
鸡有 23 只兔有 12 只
能看过程的:n=0m=35-n#设初值 , 鸡有0只 , 兔子有35只while 0<=n<=35 and 0<=m<=35:if 2*n+4*m == 94:#表判断print("符合!")print("鸡有",n,"只")print("兔有",m,"只")breakelse:n=n+1#鸡的数量加一 , 兔子的数量减一 , 不断试错m=35-n#直到得出正确答案print("鸡有",n,"只、","兔有",m,"只时 , ","符合条件吗?")123456789101112运行结果:
鸡有 1 只、 兔有 34 只时 ,符合条件吗?鸡有 2 只、 兔有 33 只时 ,符合条件吗?鸡有 3 只、 兔有 32 只时 ,符合条件吗?鸡有 4 只、 兔有 31 只时 ,符合条件吗?鸡有 5 只、 兔有 30 只时 ,符合条件吗?鸡有 6 只、 兔有 29 只时 ,符合条件吗?鸡有 7 只、 兔有 28 只时 ,符合条件吗?鸡有 8 只、 兔有 27 只时 ,符合条件吗?鸡有 9 只、 兔有 26 只时 ,符合条件吗?鸡有 10 只、 兔有 25 只时 ,符合条件吗?鸡有 11 只、 兔有 24 只时 ,符合条件吗?鸡有 12 只、 兔有 23 只时 ,符合条件吗?鸡有 13 只、 兔有 22 只时 ,符合条件吗?鸡有 14 只、 兔有 21 只时 ,符合条件吗?鸡有 15 只、 兔有 20 只时 ,符合条件吗?鸡有 16 只、 兔有 19 只时 ,符合条件吗?鸡有 17 只、 兔有 18 只时 ,符合条件吗?鸡有 18 只、 兔有 17 只时 ,符合条件吗?鸡有 19 只、 兔有 16 只时 ,符合条件吗?鸡有 20 只、 兔有 15 只时 ,符合条件吗?鸡有 21 只、 兔有 14 只时 ,符合条件吗?鸡有 22 只、 兔有 13 只时 ,符合条件吗?鸡有 23 只、 兔有 12 只时 ,符合条件吗?符合!鸡有 23 只兔有 12 只