程序从程序入口进入,到程序执行结束,大体是按照顺序结构执行语句、函数或代码块,掌握程序的结构,有利于把握程序的主体框架。

1、顺序结构--最常见的结构
  顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。程序的执行严格按照程序语句在程序中出现的先后顺序执行,如果修改了程序语句的顺序,就会影响程序的执行结果。其实无论多么复杂的程序,大概都是按照顺序结构执行的。

  

  rad = int(input('please input the rad: '))

  please input the rad: 3              //输入半径3

  print(3.14 * rad * rad)                //计算圆的面积 
  28.259999999999998               //返回圆的面积    

  该代码就是标准的顺序结构,该结构可以独立使用构成一个简单的完整程序,常见的输入,此处为语句A、计算,此处语句B,输出此处语句C三步曲的程序就是顺序结构。例如要计算圆的面积,顺序结构中,需要先输入圆的半径r,根据公式s = pi × r × r 计算圆的面积;最后输出圆的面积s,程序结束。

不过大多数情况下顺序结构都是作为程序框架的一部分,常常与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。

2、分支结构--最灵活的程序结构

  分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。有些语句根据程序运行中数据的情况,跳转到不同分支执行不同的语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。

  单选结构:

  num = int(input('please select a number: '))     //提示输入数字
  please select a number: 4
            //接受输入的数字4
  if num != 5:
                  //判断输入的数字和5是否相等,符合条件,执行下一条语句
    print('you select error!')
             //输出提示信息
  如果是这样的:
  num = int(input('please select a number: '))     //提示输入数字
  please select a number: 5             //接受输入的数字5
   if num != 5:                            //判断输入的数字和5是否相等,不符合条件                   
    print('you select error!')                  //不执行该条语句,跳过,没有选择该条语句     
                         //输出为空
  

  双选结构例子:

  age = int(input('please input your age: '))       //提示输入年龄
  please input your age: 19              //输入年龄信息

  if age < 18:                     //判断年龄是否大于18
      print('you are not adult')
            //小于输出提示信息:you are not adult
  else:

       print('you are adult')
              //大于输出提示信息:you are adult
    
  输出结果:you are adult
  

  多选结构:

   age = int(input("Enter your age:"))
if age < 0:
print("Error!")
elif age >= 0 and age < 7:
print("Free")
elif (age >= 7 and age < 14) or age >= 60:
print("Half price!")
else:
print("Full price!");

  当输入年龄为9时,输出结果为:Half price!

  当输入年龄为-1时,输出结果为:Error!

  当输入年龄为4时,输出结果为:Free!

  当输入年龄为19时,输出结果为:Full price!

  该段代码想多测试几次,需要多次输入很多行代码,下一次找到解决办法。  

3、循环结构--最有毅力的结构

  循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即while循环、do –while循环、for循环和goto循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、for循环。

  常用的循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用。

  如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。请大家注意条件改变代码执行的顺序问题。

  

 1 #!/usr/bin/env python
2 born_year = int(input('Enter the year you born: '))
3 this_year = int(input('Enter this year: '))
4 while born_year > this_year:
5 print("your age can't be negative. Please enter again: ")
6 born_year = int(input('Enter the year you born: '))
7 this_year = int(input('Enter this year: '))
8 else:
9 print('input success.')
10
11 print('your age is', this_year - born_year)

  测试结果:

 Enter the year you born: 2015
Enter this year: 2009
your age can't be negative. Please enter again:
Enter the year you born: 2015
Enter this year: 2019
input success.
your age is 4

  如果输入的不合乎逻辑,直接让用户重新输入。

  

4、模块化程序结构

  现代化编程语言中,模块化程序结构用函数来实现,即将复杂的程序分为若干模块,每个模块都编写成一个函数或者包,然后通过主函数调用函数及函数调用函数来实现一大型问题的程序编写。程序=数据结构+算法。 其中,数诀结构完成函数的定义,算法主要通过对函数的实现,测试函数完成函数的调用、值的返回等。编程需要注重理解和应用,并通过上机调试加以巩固。

  例如上边的代码作为一个代码段:

 #!/usr/bin/env python
2 born_year = int(input('Enter the year you born: '))
3 this_year = int(input('Enter this year: '))
4 while born_year > this_year:
5 print("your age can't be negative. Please enter again: ")
6 born_year = int(input('Enter the year you born: '))
7 this_year = int(input('Enter this year: '))
8 else:
9 print('input success.')
10
11 print('your age is', this_year - born_year)

  运行有两种方式:

  1、直接运行:python  test4.py

  2、添加可执行权限,直接执行文件:

    chmod  a+x test4.py

    ./test4.py

python3编程基础之一:程序结构的更多相关文章

  1. 【C语言C++编程入门】——程序结构:构思!

    学习编程语言的最好方法是编写程序.一般来说,初学者编写的第一个程序是一个名为"Hello World"的程序,它简单地将"Hello World"打印到你的电脑 ...

  2. python3编程基础之一:标识符

    每种编程语言都是需要处理数据的,需要变量.函数.类等,而这些都是通过名称访问的.因此,能够作为变量.函数.类等名称的字符串就是标识符.数据,是计算机进行运算的实体.标识符,用来标记的符号,它会指向一个 ...

  3. python3编程基础之一:关键字

    在学习编程的过程中每种语言都会有一些特殊的字母组合在本语言中表示特定的含义,这种字母组合就是关键字.原则上,关键字是无法被重复定义的,否则,语言在应用中,就无法正确确定标号的意义了. 1.关键字的获取 ...

  4. Python编程基础:循环结构

    一.为什么要用循环 现在有一个任务,要求你输出一百遍"好好学习,天天向上!",想一想,你会怎么做? (一)老老实实的笨方法 print("第1遍写:好好学习,天天向上!& ...

  5. python3编程基础之一:量的表示

    计算机的操作最终表现是数据的操纵,为了表示和存储数据,都需要对数据进行引用,计算机可以直接从内存地址实现一步访问数据,但是编程的人却没有这种能力.就像人可能够不到在高处的氢气球,但是可以拉动邦在氢气球 ...

  6. 1-2 编程基础 GDB程序调试

    简介 GDB是GNU发布的一款功能强大的程序调试工具.GDB主要完成下面三个方面的功能: 1.启动被调试程序 2.让被调试的程序在指定的位置停住. 3.当程序被停住时,可以检查程序状态(如变量值). ...

  7. 1-1 编程基础 GCC程序编译

    GCC简介      Linux系统下的gcc是GNU推出的强大.性能优越的多平台编译器,是GNU的代表作之一.gcc可以在多种硬体平台上编译出可执行程序,其执行效率与一般的编译器相比平局效率要高20 ...

  8. python3编程基础之一:代码封装

    几乎现代的编程语言都支持函数,函数是代码段的封装,并能实现一特定功能,并能重复使用的代码单位.之前的pow()和sqrt()和print()和input()等类似的内置函数,就是python内部已经实 ...

  9. python3编程基础之一:注释模块和包

    1.注释 python中的注释和其他任何编程语言中的注释都不一样,有的注释有特殊要求,而是还是有用的. 1).单行注释:注释以#开始到语句结尾,#号后一般跟一个空格 2).多行注释:文档注释,以&qu ...

随机推荐

  1. linux 基础指令

    df -h 查看磁盘空间 root@ubuntu:/etc# df -h Filesystem Size Used Avail Use% Mounted on udev 970M 0 970M 0% ...

  2. Android 在同一台设备上安装多个同一项目的apk

    如果设备上已经安装了一个apk,再次安装这个apk就会提示覆盖前面的应用 解决办法: 方法一:手动改包名 不好改,改了几次都不成功(可能是代码在svn管理的原因,改完后文件夹里的代码就没了),确实不实 ...

  3. Apache基于域名、端口、IP的虚拟主机配置(Centos 6.5)

    虚拟主机:部署多个站点,每个站点,希望用不同的域名和站点目录,或者是不同的端口,不同的ip,需要虚拟主机功能.一句话,一个http服务要配置多个站点,就需要虚拟主机. 虚拟主机分类:基于域名.基于端口 ...

  4. 初识Nginx,简单配置实现负载均衡(ubuntu + Nginx + tomcat)

    工作需要,研究了一下Nginx的反向代理实现负载均衡,网上搜了一下教程,大多含糊不清,所以写下这个,权当总结,方便日后查看,如果能恰好帮到一些需要的人,那就更好了 先说需求,域名指向搭建了Nginx的 ...

  5. extern "C" 分析 -转

    1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言,C++保留了一部分过程式语 ...

  6. 更改Ubuntu下默认Python版本

    更改Ubuntu下默认Python版本 首先查看系统内有哪些版本的Python ls /usr/bin/python* 查看当前python版本 python --version 基于用户修改默认版本 ...

  7. 每日一题-——LeetCode(46)全排列

    题目描述: 给定一个没有重复数字的序列,返回其所有可能的全排列.输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ...

  8. G1垃圾收集器角色划分与重要概念详解【纯理论】

    继续接着上一次[https://www.cnblogs.com/webor2006/p/11129326.html]对G1进行理论化的学习,上一次学到了G1收集器的堆结构,回忆下: 接着继续对它进行了 ...

  9. linux网络编程之socket编程(十三)

    今天继续学习socket编程,从今天起开始学习UDP,具体内容如下: ①.无连接 UDP协议它内部并没有维护端到端的一些连接状态,这跟TCP是不同的,TCP是基于连接的,而在连接的时候是需要进行三次握 ...

  10. 题解 洛谷P1290 【欧几里德的游戏】

    这题没必要那么麻烦,只需要推理一下即可: 假设我们有两个数\(x,y\),先把\(x\)设为较大值,\(y\)设为较小值.现在分成三种情况: \(1\).若两数为倍数关系,操作的一方赢. \(2\). ...