Python基础之程序设计结构

  程序设计基本结构包括:顺序结构、选择结构、循环结构,Python中任何算法都可以通过这3种基本结构的排列组合来实现。
  在介绍Python程序设计结构之前,童鞋们需要储备程序流程图的相关知识如下:

  据此,Python程序设计3种基本结构的流程图如下:

· 顺序结构实例

  顺序结构其实贯穿于所有的Python程序之中,这里给出一个“Hello World”的小例子

#Input输入数据
str1 = "Hello"
str2 = "World"
#Process处理数据
str_add = str1+" "+str2
#Output输出数据
print(str_add)

· 选择结构实例

  选择结构包含:多分支(if…elif…else…)和异常处理(try…except…),由于异常处理机制对于数分师来说并不是重点,因此这里不再赘述,有兴趣的童鞋请参阅:Python异常处理
  接下来,举一个选取最大值的实例,以帮助童鞋理解Python选择结构中的多分支问题。实例需求:从x1,x2,x3三个数中,选取最大的数并输出。

# 共4种解决方法,代码由繁琐到简洁依次排列
x1=1
x2=2
x3=3

# ==== 通盘比较 ====
if x1>x2 and x1>x3:
    max_n=x1
elif x2>x1 and x2>x3:
    max_n=x2
else:
    max_n=x3    

# ==== 决策树 ====
if x1>x2:
    if x1>x3:
        max_n=x1
elif x2>x3:
    max_n=x2
else:
    max_n=x3
    
# ==== 顺序处理 ====
max_n = x1
if x2>max_n:
    max_n=x2
if x3>max_n:
    max_n=x3
print(max_n)

# ==== Python内置函数 ====
max_n=max(x1,x2,x3)

#输出结果
print(max_n)
3

· 循环结构实例

  期望用Python编译循环结构实例,首先要了解循环类型循环控制语句,循环类型包括for循环和while循环两种,其配套的循环控制语句也有break语句和continue语句两种,详情可参考: Python循环语句

循环类型 样例描述
for循环 for <变量> in <序列>:
  <执行语句>
while循环 while <判断条件>:
  <执行语句>
循环控制语句 样例描述
break语句 循环执行过程中终止并且跳出整个循环
continue语句 循环执行过程中终止并且跳出该次循环,执行下次循环

  这里给出计算平均值的实例,各位可以比较一下不同代码之间的优劣性,实例如下:

# ==== for循环 ====
n = eval(input("how many numbers?"))
sum = 0 
for i in range(n):
    x = eval(input("enter a number >>"))
    sum += x
print("\nThe average is",sum/n)
# 输出结果
how many numbers?3
enter a number >>10
enter a number >>20
enter a number >>30
The average is 20.0
# 缺点:需要提前定义输入数据的个数

# ==== while循环 ====
sum = 0
count = 0
moredata = "yes"
while moredata[0] == "y": #moredata首字母为y,执行循环
    x = eval(input("enter a number >>"))
    sum += x
    count += 1
    moredata = input("do you have more numbers(yes or no)?")
print("\nThe average is",sum/count)
# 输出结果
enter a number >>10
do you have more numbers(yes or no)?y
enter a number >>20
do you have more numbers(yes or no)?y
enter a number >>30
do you have more numbers(yes or no)?n
The average is 20.0
# 缺点:虽无需计数,但又总被提示信息打扰

# ==== while哨兵循环 ====
sum = 0
count = 0
xStr = input("enter a number (<ENTER> to quit) >>") #while执行前需定义xStr
while xStr != "": #xStr为空时,退出循环
    x = eval(xStr)
    sum += x #若将x换成xStr,当xStr为空时,表达式不成立
    count += 1
    xStr = input("enter a number (<ENTER> to quit) >>")
print("\nThe average is",sum/count)
# 输出结果
enter a number (<ENTER> to quit) >>10
enter a number (<ENTER> to quit) >>20
enter a number (<ENTER> to quit) >>30
enter a number (<ENTER> to quit) >>
The average is 20.0
# 缺点:需用户手动输入数据,不能自动读取文件数据

# ==== 文件循环 ====
# average1.txt 文件内容如下
10
20
30

fileName = "D:\\average1.txt" #读取D盘中的txt文件
infile = open(fileName,'r')
sum = 0
count = 0
for line in infile:
    sum = sum + eval(line)
    count = count + 1
print("\nThe average is",sum/count)
# 输出结果
The average is 20.0

# ==== 嵌套循环 ====
# average2.txt 文件内容如下
10,20,30

fileName = "D:\\average2.txt" 
infile = open(fileName,'r')
sum = 0
count = 0
line = infile.readline()
while line != "": #外循环:对每行循环一次
    for xStr in line.split(","): #内循环:对一行中每个数字循环一次     
        sum = sum +eval(xStr)
        count = count +1
    line = infile.readline()
print("\nThe average is",sum/count)
# 输出结果
The average is 20.0

分类: Python技术