程序从程序入口进入,到程序执行结束,大体是按照顺序结构执行语句、函数或代码块,掌握程序的结构,有利于把握程序的主体框架。
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
多选结构:
1 age = int(input("Enter your age:")) 2 if age < 0: 3 print("Error!") 4 elif age >= 0 and age < 7: 5 print("Free") 6 elif (age >= 7 and age < 14) or age >= 60: 7 print("Half price!") 8 else: 9 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)
测试结果:
1 Enter the year you born: 2015 2 Enter this year: 2009 3 your age can't be negative. Please enter again: 4 Enter the year you born: 2015 5 Enter this year: 2019 6 input success. 7 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