迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种结构的代码我们称之为顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后我们要根据玩家得到分数来决定究竟是进入第二关还是告诉玩家“Game Over”,这里就会产生两个分支,而且这两个分支只有一个会被执行,这就是程序中分支结构。一个操作需要重复执行多次,这个时候就考虑使用循环。python中的循环有for循环和while循环
在Python中,要构造分支结构可以使用if、elif和else关键字。所谓关键字就是有特殊含义的单词,像if和else就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以)。if、elif、else都是关键字,需要能够读和写(背)
if 条件语句1:
执行语句块1
elif 条件语句2:
执行语句块2
else:
执行语句块3
其他语句
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
【注意】
python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
- 1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
- 2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 3、在Python中没有switch – case语句。
操作符 | 描述 |
---|---|
< |
小于 |
<= |
小于或等于 |
> |
大于 |
>= |
大于或等于 |
== |
等于,比较两个值是否相等 |
!= |
不等于 |
1.判断条件语句1是否为True,如果为True就执行冒号后面的执行语句块1,整个条件结构就执行完了,执行其他语句
如果是False,就去判断条件语句2是否为True.
2.如果是True就执行执行语句块2,再执行其他语句。如果是False,就直接执行执行语句块3,再执行其他语句。
注意:冒号后面的语句块和冒号所在的语句要保持一个缩进。
if 条件语句:
执行语句块
判断条件语句的值是否为True,如果为True,就只执行执行语句块。否则就直接执行if语句后面的其他语句
【例1】要求:判断年龄是否大于18,如果大于18就输出’成年人‘
age = 10
if age > 18:
print('成年人')
【例2】判断一个数是否是偶数,如果是就打印'xxx是偶数'
num = 10
if num % 2 == 0:
print('%d是偶数'%(num))
注意print函数内容的书写
if 条件语句:
执行语句块1
else:
执行语句块2
判断条件语句是否为True,如果为True,就执行执行语句块1,否则执行执行语句块2
【例】输入一个数,如果这个数大于10,就输出它的2倍值。否则输出这个数的2次幂
inputvalue = '123'
print(type(inputvalue))
new_value = int(inputvalue)
# 比较运算符和+,在运算的时候,两边可以都是字符串,也可以都是数字。但是不可以一样一个
if new_value > 10:
num = new_value * 2
print(num)
else:
num = new_value ** 2
print(num)
# 比较运算符和+,在运算的时候,两边可以都是字符串,也可以都是数字。但是不可以一样一个
if new_value > 10:
num = new_value * 2
print(num)
else:
num = new_value ** 2
print(num)
注意:
input():从控制台获取键盘输入的一个字符串,以回车结束。
inputvalue = input('请输入一个数:')
比较运算符和+,在运算的时候,两边可以都是字符串,也可以都是数字。但是不可以一样一个
【例】给一个成绩,判断成绩是优秀(90-100)、良好(80-89)、中等(60-79)、不及格(60以下)
grade = 70
if grade < 60:
if grade < 0:
print('成绩有误')
else:
print('不及格')
elif grade <= 79:
print('中等')
elif grade < 90:
print('良好')
elif grade <= 100:
print('优秀')
else:
print('成绩有误')
注意:
1.如果要求中需要多个判断,可以使用多个elif的if语句。
2.一个if/elif/else语句中可以嵌套其他的if语句,要注意缩进问题
3.python中没有switch语法。
pass: 占位,防止因为没有写块结构而出现语法错
(1)python中的for循环只有for-in循环:
格式:
for 变量 in 列表:
循环体
(2)执行过程:使用变量去依次获取列表中的数据,直到获取完为止;每获取一个数据,执行一次循环体
循环次数:由列表中的数据的个数决定
【例1】去获取字符串中的没一个字符
str1 = 'abcdefuuuuhshshshakkknnlls'
for char in str1:
print(char)
【例2】去统计一个字符串中'a'出现的次数
str1 = 'abcdefuuuuhshshshakkknnlls'
count = 0
for char in str1:
if char == 'a':
count += 1
print(count)
输出:2
如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环,while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True循环继续,表达式的值为False循环结束。
while 条件语句:
循环体
判断条件语句的结果是否为True,如果为True就执行依次循环体。
执行完循环体后再去判断条件语句是否为True,为True的话又执行循环体。重复这个过程,直到条件语句的结果为False
注意:for循环可以实现的操作,while循环都可以
【例】打印1-100
num = 1
while num <= 100:
print(num)
num += 1
【例】计算1+2+3+...+100的值
num = 1
sum1 = 0
while num <= 100:
sum1 += num #sum1 = sum1+num
num += 1
print(sum1)
输出:2050
【例】用while循环求1-100中所有偶数的和
num = 0
sum1 = 0
while num <=100:
if num % 2 == 0:
sum1 += num
num += 1
print(sum1)
方法二
num = 0
sum1 = 0
while num <= 100:
sum1 += num
num += 2
print(sum1)
对比一下两个方法的逻辑
int():将其他的数据转换成int类型的数据
float() 将其他数据转换成浮点型数据
bool() 将其他的数据转换成布尔值
str() 将其他的数据转换成字符串。所有的数据类型的数据都可以转换成字符串
num = 12.56
print(int(num)) # 将浮点数转换成整数(直接去掉小数部分)
bool1 = False
print(int(bool1)) # 将布尔值转换成整数,True -> 1 False -> 0
str1 = '129'
print(int(str1)) # 只有纯数字字符串/纯数字字符串前有+、-号的字符串,才能转换成相应的整数
说明:
1.可以在if或者while循环后的条件语句,可以不是结果为True/False的表达式,
也可以是值是其他类型数据的表达式。判断的时候就看这个值转换成bool后的结果是True还是False
【例】判断一个字符串是否是空串,如果不是就直接打印这个字符串,否则打印"空串"
方法1:
str1 = ''
if str1:
print(str1)
else:
print('空串')
# 方法2:
if str1 != '':
print(str1)
else:
print('空串')