程序有三种基本结构:顺序结构,分支结构,循环结构。
Python的单分支结构使用 if保留字对条件进行判断,使用方法如下:
if 判断条件:
语句块
其中,if和语句块前的缩进都是语法的一部分。
语句块是if满足条件以后执行的一个或多个语句序列,缩进表示语句块和if的包含关系。当判断条件产生True时,执行语句块;若结果是False,则跳过语句块。以下的例子进行演示:
# 判断用户输入的数字是奇数还是偶数,偶数就输出(这个数)是偶数,奇数不输出
s = eval(input('请输入一个整数:'))
if s%2 == 0:
print('{}是偶数!'.format(s))
print('这个数是{}'.format(s))
if分支结构中的 条件 是一个或多个条件,多个条件之间用and或者or来进行逻辑组合。and表示多个条件“与”的关系;or表示多个条件“或”的关系。有以下例子演示:、
# 判断用户输入的数 既能被3整除,也能被5整除
s = eval(input('请输入一个整数:'))
if s%3 == 0 and s%5 == 0:
print('{}能被3和5整除!'.format(s))
print('这个数是{}'.format(s))
Python的二分支结构使用if-else保留字对条件进行判断,语法格式如下
if 判断条件:
语句块1
else:
语句块2
其中if else和语句块前的缩进都是语法的一部分。
执行规则是:当判断条件为True时,执行语句块1跳过语句块2,当判断条件为False时,跳过语句块1执行语句块2。这里修改4.2.1中关于奇偶判断的代码,示例如下:
# 判断用户输入是奇数还是偶数,偶数就输出(这个数)是偶数,奇数就输出(这个数)是奇数
s = eval(input('请输入一个整数:'))
if s%2 == 0:
print('{}是偶数'.format(s))
else:
print('{}是奇数'.format(s))
二分结构还有一种更简单的表达方式,适合 语句块1和语句块2 都只包含简单表达式的情况,语法格式如下:
表达式1 if 判断条件 else 表达式2
这里修改4.2.1中“能否同时被3和5同时整除”的代码演示此二分结构写法
# 判断用户输入的数 既能被3整除,也能被5整除
s = eval(input('请输入一个整数:'))
t = ''if s%3 == 0 and s%5 == 0 else'不'
print('{}{}能被3和5整除!'.format(s,t))
【提示】表达式和语句
表达式是产生或计算新数据的代码片段,它并不完整。例如99+1是表达式,a=99+1则是语句。
Python的二分支结构使用if-elif-else保留字对条件进行判断,语法格式如下
if 判断条件:
语句块1
elif 判断条件
语句块2
elif 判断条件
………………else:
语句块n
多分支结构通常用于判断同一个条件或一类条件的多个执行路径。需要注意,Python会按照分支结构的代码顺序依次判断,任意一个判断条件成立则执行相应语句后跳出整个if-elif-else结构,若全部判断条件均不成立,则执行else中的语句。
所以使用多分支结构时需要注意多个逻辑条件的先后顺序
下面进行实例演示:
# 用户输入一个百分之成绩,转换成相应等级ABCDE
s = eval(input("请输入你的百分制成绩:"))
if s>60.0:
g = 'D'
elif s>70.0:
g = 'C'
elif s>80.0:
g = 'B'
elif s>90.0:
g = 'A'
else:
g = 'E'
print('对应等级为:{}'.foemat(g))
分支结构中判断条件可以是任何能产生True或False值的语句或者函数。形成判断条件最常见的方法是使用关系运算符。
操作符 | 操作符含义 |
---|---|
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
Python中,任何非零数值、非空类型都等价于True,0或空类型等价于False。可以直接用来做为判断条件。
Python保留 not、and、or三个保留字对条件进行逻辑运算或组合not 表示单个条件的“否”;and表示多个条件之间的“与”;or表示多个条件之间的“或”。多个条件之间可以用小蛞和进行组合实现关系运算。
Python中有两种循环结构:遍历循环和无限循环。遍历循环使用保留字for依次提取遍历结构的各个元素进行处理;无限循环则是使用保留字while根据条件判断执行程序。
for循环使用方法如下:
for 循环变量 in 遍历结构:
语句块
遍历循环可以认为是从遍历结构中逐一提取元素放在循环变量中,每提取一次元素则执行一次语句块。for循环的执行次数取决于遍历结构的元素个数。
遍历结构可以是 字符串、文件、range()函数或者组合数据类型等。示例如下;
for c in 'Python':
print(c)
# 结果如下:
P
y
t
h
o
n
遍历结构还有一种扩展模式如下:
for c in 'PY':
print(c)
else:
print('遍历结束')
# 输出结果如下
P
Y
遍历结束
while循环使用方法如下
while 判断条件:
语句块
当程序执行while语句是:若判断条件为True,则执行循环体中的语句;若判断条件为False。则结束循环,执行与while同级别缩进的后续语句。示例如下
n = 0
while n < 10:
print(n)
n += 3
# 输出如下
0
3
6
9
与遍历循环相似,无限循环也有一种使用else的扩展模式,使用扩展模式修改上述代码如下:
n = 0
while n < 10:
print(n)
n += 3
else:
print('循环正常结束')
# 输出如下
0
3
6
9
循环正常结束
循环结构有两个辅助循环控制的保留字:break和continue
break:跳出当前循环结构体,执行循环结构体同级的之后的语句。
continue:跳出当前一次循环,不跳出循环结构体。
具体实例如下:
# break跳出循环结构体的使用
while True:
s = input(请输入一个名字(输入Q退出):)
if s == Q:
break
print('输入的名字是',s)
print('程序退出')
# 输出结果如下:
请输入一个名字(输入Q退出):汪苏泷
输入的名字是汪苏泷
请输入一个名字(输入Q退出):许嵩
输入的名字是许嵩
请输入一个名字(输入Q退出):徐良
输入的名字是徐良
请输入一个名字(输入Q退出):Q
程序退出
# continue跳出当前次循环的使用
for c in 'Python':
if c == 't':
print('\n')
continue
print(c,end='')
# 输出如下:
Py
hon
Python程序一般对输入有一定要求,但当实际输入不满足程序需求的时候,可能出现程序的运行错误。如下:
>>> n = eval(input('请输入有一个整数: '))
请输入有一个整数: python
# 报错如下
Traceback (most recent call last):
File "" , line 1, in <module>
n = eval(input('请输入有一个整数: '))
File "" , line 1, in <module>
NameError: name 'python' is not defined
由于是用来eval()函数,如果用户输入的不是数字则可能报错。这类错误有很多种可能性,不可能一一列出。为了程序运行的时候的稳定性,这里引入程序异常处理机制(try-except),基本语法如下:
try:
语句块1
except:
语句块2
语句块1表示正常需要执行的语句,语句块2则是语句块1发生异常时执行的语句。实例如下
try:
n = eval(input('请输入一个数字: '))
print('输入的数字的3次方为:',n**3)
except:
print('出错了,请重新输入!')
# 运行结果如下
>>>
请输入一个数字: 1010
输入的数字的3次方为: 1030301000
>>>
请输入一个数字: python
出错了,请重新输入!
【提示】异常类型
只要程序可能异常退出,无论哪种类型,Python中都可以用try-except捕捉这种异常并进行处理。
编写一个程序,在1-1000中随机生成一个数字,然后用户循环猜这个数字,对于每个数字都只回答“猜大了”或“猜小了”,直到猜测结束,输出用户猜了几次。
【提示】随机数
产生随机数需要用到Python语言的标准随机数库random,关于这个库的使用后边会介绍,这里只说怎么生成1-1000之间的随机数:
import random
n = random.randint(1,1000)
根据题目要求,需要不断接受用户输入,并根据输入进行逻辑判断。所以改程序的简单实现如下:
# 循环猜数游戏
import random
t = random.randint(1,1000) #产生1-1000之间的随机数
count = 0 #用来记录用户猜对用的次数
# while循环,直到用户猜中跳出循环
while True:
try:# 为了确保程序在用户错误输入时能继续运行,引入try-except
num = eval(input('请输入一个1-1000之间的数字:'))
except:
print('请检查输入并重新输入')
continue
count += 1
if num > t:
print('猜大了')
elif num < t:
print('猜小了')
else:
print('猜对了!\n您猜了{}次'.format(count))
break
# 输出结果如下:
请输入一个1-1000之间的数字:500
猜小了
请输入一个1-1000之间的数字:750
猜小了
请输入一个1-1000之间的数字:875
猜小了
请输入一个1-1000之间的数字:937
猜小了
请输入一个1-1000之间的数字:969
猜小了
请输入一个1-1000之间的数字:985
猜小了
请输入一个1-1000之间的数字:992
猜大了
请输入一个1-1000之间的数字:988
猜对了!
您猜了8次