在分支结构中,要用到if、elif、else这三个关键字来完成分支结构
分支结构的一般结构的一般形式如下所示:
if <test1>:
<statements1>
elif <test2>:
<statements2>
else:
<statements3>
当满足test1的条件,则会执行statements1,若不满足该条件则判断test2,若不满足,则会转到else下执行statements3。实际上,elif和else部分都可以省略,而且每一段可以嵌套一个句子以上的语句。注意在使用if、elif和else结合在一起的原因在于他们垂直对齐,具有相同的缩进。在python中没有switch-case语句。
下面是几个分支结构的小实例:
'''
例1:用户名密码校验程序
'''
username = input('请输入用户名:')
password = input('请输入密码:')
if username=='admin' and password=='12345':
print('登陆成功')
else:
print('用户名或密码错误')
'''
例2:求分段函数的值(第一种方法)
3x - 5 (x > 1)
f(x) = x + 2 (-1 <= x <= 1)
5x + 3 (x < -1)
'''
x =float(input('输入x的值:'))
if x>1:
y = 3*x - 5
elif x<=1 and x>=-1:
y = x + 2
else:
y = 5*x +3
print('f(%.2f)=%.2f' %(x,y))
'''
以下为第二种方法
'''
x =float(input('输入x的值:'))
if x>1:
y = 3*x - 5
else:
if x>=-1:
y = x + 2
else:
y = 5*x + 2
print('f(%.2f)=%.2f' %(x,y))
通过例2可以看出,在python中也可以采用嵌套分支的方法解决复杂的分支问题。
'''
例3:使用海伦公式计算三角形的面积
'''
a = float(input())
b = float(input())
c = float(input())
if (a+b>c) and (a+c>b) and (b+c>a):
long = a + b + c
p = long/2
area = (p*(p-a)*(p-b)*(p-c))**0.5
print('三角形的三条边分别为a = %.2f, b = %.2f, c = %.2f' %(a,b,c))
print('周长为:%.2f, 面积为:%.2f' % (long, area))
else:
print('不构成三角形')
循环结构就是重复执行某些语句,在python中循环结构主要有while循环和for-in循环两种结构
当我们不知道一些代码到底要运行多少次才能得到我们所需要的结果,一般会选用while循环方式。
while循环的一般形式如下所示:
while <test1>:
<statements1>
else:
<statements2>
当表达式test1为True是,循环结构一直进行,当为False时,则跳出当前循环。但是在循环过程中往往会碰到break语句和continue语句。若在循环中碰到break语句,则会跳出当前的循环。如果在循环中碰到continue语句则会跳过这一次的循环,执行下一次循环。只有当循环正常离开时,即没有碰到break语句时,才会执行else块的语句。
下面是while循环的例子:
'''
例4:一个猜数游戏
'''
import random
answer = random.randint(1,100)
count = 0
while True:
x = int(input('请输入所猜的数字:'))
count = count + 1
if x > answer:
print('大了')
if x < answer:
print('小了')
if x == answer:
print('恭喜你答对了')
break
if count > 10:
print('小笨蛋')
在例4中需要注意,当找到正确的数字一定要跳出循环,否则会进入死循环。
for循环是python中的一个通用的序列迭代器,可以遍历任何有序的序类对象内的元素。
for-in循环的一般例子形式如下所示:
for <target> in <object>:
<statements1>
else:
<statements2>
如果循环结束后,没有碰到break语句,就会执行else语句块中的内容。
下面是for-in结构的例子:
'''
例5:使用for-in循环从1到100求和
'''
sum = 0
for x in range(101):
sum = sum + x
print(sum)
对于range(101)的作用是构造了一个0到100的取值范围,相关用法如下
range(101)可以产生一个0到100的整数序列。
range(1, 100)可以产生一个1到99的整数序列。
range(1, 100, 2)可以产生一个1到99的奇数序列,其中2是步长,即数值序列的增量。
'''
例6:使用for-in循环和range函数 求1-100中偶数的和
'''
sum = 0
for x in range(2,101,2): #从2-100 步长为2开始增长
sum = sum + x
print(sum)
'''
以下为另外一种方法
'''
sum = 0
for x in range(101):
if x % 2 ==0:
sum = sum + x
print(sum)
'''
例7:打印九九乘法表
'''
for x in range(1,10):
for y in range(1,x+1):
print('%d*%d=%d' % (x, y, x * y), end='\t')
print()
参考资料:
[1]https://github.com/jackfrued/Python-100-Days
[2]《Python学习手册(第4版)》