前面我们学习了Python中如何输出,以及如何输入等级除知识,而在编程中,程序的逻辑结构也是一个非常重要的知识点,熟练掌握了程序的逻辑结构才能更好的开发。
`
程序逻辑是编程语言中重要的部分,一般来说程序的逻辑结构有三种:顺序结构,分支结构,循环结构。这三种结构有一个共同的特点,那就是他们的入口就只有一个,出口也只有一个。下面用流程图来简单介绍一下他们的流程:
分支结构主要是根据布尔表达式的真值情况来执行不同的语句,然后从一个出口出去。在Python中可以用关键字if。else,elif来实现分支处理。
语句 | 描述 |
---|---|
if 布尔表达式: | 当布尔表达式为真的时候执行 |
if 布尔表达式:else : | 当表达式为真的时候执行if语句后面的语句,否则执行else后面的语句 |
if 布尔表达式:elif 布尔表达式:else: | 当if语句和elif语句后面的布尔表达式为真的时候就执行与之对应的语句,否则执行else后面的语句 |
# coding:UTF-8
age=20
if 18<=age<+22:
print("我是一个大学生,拥有无穷的拼搏精神与探索精神") #语句为True,执行。
print("开始为自己的梦想努力奋斗")
程序运行结果:
我是一个大学生,拥有无穷的拼搏精神与探索精神
开始为自己的梦想努力奋斗
# coding:UTF-8
money=100
ice_price=120
if money>=90:
print("骄傲的走到商店的冰柜面前拿起一个冰淇凌,然后说不用找了")
if ice_price>money:
print("老板将你踢出门")
else:
print("悄悄的回家,然后伸手向父母要钱卖冰激凌")
print("冰淇凌价格太贵了,还是雪莲才是完美的")
运行结果:
骄傲的走到商店的冰柜面前拿起一个冰淇凌,然后说不用找了
老板将你踢出门
冰淇凌价格太贵了,还是雪莲才是完美的
# coding:UTF-8
score=90
if 90<=score<=100:
print("该学生是优等生")
elif 70<=score<=89:
print("该学生是良好生")
elif 60<=score<=69:
print("该学生需要被关注,有很大提高空间")
else:
print("该学生没有机及格,还需要努力")
程序运行结果:
该学生是优等生
我们知道Python语言是由c语言开发而来,所以也完美的集成了c语言中的一些操作,比如用assert断言,很多人都不知道他的作用,或者说不太喜欢用它,但是为了程序的完整性,用断言不仅仅能保证程序的健壮性,还可以提示逻辑错误,为我们更改代码提供了便利:
score=100
age=18
assert age>score #当布尔表达式为假的时候会在这里终端,然后提示‘AssertionError’信息。
print("%d" % (age))
和c语言中一样,Python也继承了while循环,但是多了一个while else循环语句
通过上面的流程图的介绍,我们可以发现,无论是何种循环,他都必须有判断条件的修改,以达到跳出循环,避免死循环是学习中的重要部分。
下面通过一个小例子来详细的介绍如何使用while循环:
实例:实现1到100的累加和
# coding:UTF-8
sum=0
num=1
while num<=100:
sum+=num; #循环体
num+=1 #修改循环条件
print("a到100所有数字的和为:%d" % (sum))
while...else...语句:
# coding:UTF-8
sum=0
num=1
while num<=100:
sum+=num
num+=1
else:
print("1到100所有数字的和为:%d" % (sum))
看到这里很多人可能会绝的用while…else…不如用while语句简单,但是,while…else…语句在else后面会有以个独立的语句块,也就是说我们可以将语句和其他语句分隔开。这就是该语句的最大特点。
实例:输出一个斐波那契数列(1000以内)
# coding:UTF-8
num_a=0
num_b=1
while num_b<1000:
print(num_b,end=",")
num_a,num_b=num_b,num_a+num_b #数据计算
输出结果:
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
# coding:UTF-8
for num in {1,2,3}:
print(num,end=",")
如果想要使用佛for循环,往往要设置一个数据数除的范围,也就是序列,和上面一样,但是如果对于很长的序列,那我们就用range(开始值,最大值,步长)来实现。
# coding:UTF-8
sum=0
for num in range(101): #最大生成的数字为101
sum+=num
print(sum)
程序是用来实现1到100的数字的累加
循环结构的实例还有很多,就不一一举例了,可以自己多动手去实现。
(1).continue语句,学过c语言的同学都知道,continue是作为循环语句中的跳转语句,一般与分支结构语句结合,当满足条件时,跳过此次循环,继续下一次的循环。
(2).break语句,break语句的格式和continue相似,但是它的用法和continue不太一样,如果满足条件,直接终止该循环语句的循环,不会再循环。
实例:利用循环语句实现对字符串大写改为小写
num_all="" #将num_all置为空串
infors="I LIKE YOU,so do You Want Married with mE"
for item in infors:
if 65<=ord(item)<=90:
num=chr(ord(item)+32)
num_all=num_all+num
else:
num_all=num_all+item
print(num_all)
实例:利用跳转语句实现求对1到100中所有奇数的和
# coding:UTF-8
sum=0
for num in range(1,100,1):
if num%2==0:
continue
else:
sum+=num
print("1 到 100中所有的奇数的和为:"+str(sum))
循环结构是可以嵌套使用的,一个循环结构可以有若干个子循环结构,以此来实现更加复杂的程序结构。
例如:利用循环结构实现打印9*9乘法表:
# coding:UTF-8
for x in range(1,10):
for y in range(1,x+1):
print("%d*%d=%d" % (y,x,x*y),end="\t")
print()
1.if语句可根据判断结果来决定程序的流程
2.分支结构包括if,if…else…,if …elif…else语句,不同的语句的选择情况不同,就i像道路一样,有的是三条道路的,有的是十字路口,根据要求去选择就好。
3.如果需要重复的执行某种功能的时候,就可以用fo或者while语句。
4.break,和continue跳转语句,往往和分支结构语句结合,在循环中去特定的实现某种功能。