一、分支
python中的分支结构只有if语句,没有switch
1.什么时候需要使用if语句?
定义:做某件事情,需要满足某个条件
2.如何使用if语句?
语法:
a.语法1:
if 条件语句:
代码段1
说明:
if:关键字 -> 如果的意思
条件语句:任意一个有结果的语句(最终会转换成布尔值再判断)
::固定写法(冒号后面第一行必须有缩进,冒号缩进组合形成代码段)
代码段1:和if保持一个缩进的一行或者多行语句
执行过程:
第一步:判断条件语句是否为True
第二步:为True:执行后面的代码段1和其他语句;
为False:不执行代码段1,直接执行if外边的其他语句
age = 16
if age >= 18:
print('你可以玩耍了')
# 和if保持一个缩进,均满足条件,都会执行
print('你可以去上海迪士尼玩了')
print('=====') # 没有和if保持一个缩进,程序都会执行
总结:需要满足某个条件才执行的语句就写在if里面,不管条件是否满足都执行的语句,写在if的外面
b.语法:
if 条件语句:
代码段1
else:
代码段2
(其他语句)
说明:
else:关键字 -> 否则的意思(不满足if条件的其他情况)
执行过程:
第一步:判断条件语句是否为True
第二步:为True:执行后面的代码段1;为False:执行代码段2,然后执行else外边的其他语句
num = int(input('输入一个数字:'))
if num % 2 == 0:
print('%d是偶数' % num) # 满足条件执行
else:
print('%d是奇数' % num) # 不满足条件执行
print('=========') # 无论与否,都会执行
c.语法:
应用:当情况不止两种时,采用
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
...
else:
代码段n
(其他语句)
说明:
elif:关键字 -> 前面条件不满足,则开始判断其他条件是否满足
执行过程:
第一步:判断条件语句1是否为True
第二步:为True:执行后面的代码段1;执行其他语句
第三步:为False:判断条件语句2是否为True
第四步:重复二、三步骤
第n步;前面都不成立,执行else后面的语句,然后执行其他语句
注意:后面的语句判断的前提是前面的条件语句不成立
salary = 20000
if salary <= 5000:
print('水中游')
elif salary <= 10000:
print('同城游')
elif salary <= 15000:
print('国内游')
else:
print('国外游')
print('----------------')
补充:a. python中可以使用3个双引号或者3个单引号,来表示一个字符串
b. else不是一定要写,根据情况后面的else结构可以没有!
扩展
1.if的嵌套
定义:if结果里还可以写if结构
# 输入一个数,如果是偶数,打印“xx是偶数”,同时判断是否能被4整除
# 如果可以打印“xx还是4的倍数”,如果不是只打印“xx是奇数”
num = int(input('请输入一个数字:'))
if num % 2 == 0: # if嵌套if语句
print('%d是偶数' % num)
if num % 4 == 0: # num是偶数才判断
print('%d还是4的倍数' % num)
else:
print('是偶数但是不是4的倍数!')
else: # else嵌套if语句
print('%d是奇数' % num)
if num % 5 == 0:
print('这个奇数是5的倍数')
2.三目运算符
c语言/java/js语言中:表达式?值1:值2 -> 判断表达式的值是否为True,
为True整个表达式的结果是值1,否则是值2
python中:值1 if 表达式 else 值2 -> 判断表达式的值是否为True,
为True整个表达式的结果是值1,否则是值2
注意:当只有两种情况时使用
# 练习:输入年份,判断是否是闰年。是,输出‘闰年’,
# 否则输出‘不是闰年’,闰年条件:被4整除,不能被100整除,
# 或者被400整除
year = int(input('请输入一个年份:'))
print('闰年') if (year % 4 == 0 and year % 100 != 0) \
or year % 400 == 0 else print('不是闰年')
二、循环
1.为什么使用循环
for循环和while循环
目的:实现某个功能的时候需重复操作,则考虑循环
2. for 循环
a.语法:
for 变量 in 序列:
循环体
说明:
for:关键字
变量:一个变量名(赋值与否均可),一般是新的变量
in:关键字(固定写法)
序列:属于序列的数据;包括(字符串,列表,字典,集合,元祖,生成器,迭代器,range)
注意:序列的个数决定循环体执行的次数
::固定写法
循环体:需要重复执行的代码;和for保持一个缩进
执行过程(重要):
第一步:让变量去序列中取值,一个一个取
第二步:取一个值,执行一次循环体
for char in 'a': # 遍历序列
print('====')
print(char)
print('aaaaaaa')
# 练习:给一个字符串'hosee 23jh!hs89_=sssAsK',统计数字出现的个数
count = 0 # 保存数字的个数,默认是0个
for item in 'hosee 23jh!hs89_=sssAsK':
if '0' <= item <= '9':
count += 1
print(count)
range函数 取奇数 通过遍历字符串下标遍历字符串 """ 执行过程: for能做的事情,while都可以做到,while能做的事情, 1.continue 功能: 2.break 3.else 执行过程:循环过程不变,else后面的代码段,循环自然死亡就会执行,但遇到break结束,就不会执行 while循环
range(N) -> 产生数字序列(0~N-1)(N必须是整数,n > 0)
range(m,n) -> 产生数字序列 m~ n-1 (m,n必须是整数,n > m)
range(m,n,step) -> 产生从m开始,每次值加step产生
下一个数字,直到n前一个为止。
(m,n必须是整数, step > 0,n>m step <0 n
for item in range(1, 100, 2):# 计算1+2+3...+100
sum1 = 0
for num in range(1, 101):
sum1 += num
print(sum1)
# 练习:求100以内所有能被13或者7整除的数的和
sum2 = 0
for item in range(100):
if item % 13 == 0 or item % 7 == 0:
sum2 += item
print(sum2)
str1 = 'hello world:'
# index是字符串对应的下标,从前往后取
for index in range(len(str1)):
print(str1[index])
# index是字符串对应的下标,从后往前取
for index in range(-1, -len(str1)-1, -1):
print(str1[index], end=' ')
3.while循环
a.语法:
while 条件语句:
循环体
说明:
while:关键字;当...的时候
条件语句:和if后面的条件一致(赋值语句除外)
::固定写法
循环体:需要重复执行的语句写在循环体中;
和while保持一个缩进
第一步:判断条件语句是否为1
第二步:执行循环体
第三步:重复一、二步
第四步:直到条件语句为0,结束循环,执行后面的语句for和while的选择
for循环不一定能做到
for场景:1.遍历序列 2.循环次数确定
while场景:1.死循环 2.循环次数不确定# 控制while循环次数
num = 0
while num < 4:
num += 1
# 用while循环遍历字符串
str1 = 'how are you'
index = 0
while index < len(str1):
print(str1[index])
index += 1
三、continue、break和else
continue是python关键字,
要求:只能用在循环体中
while:执行到此,结束当次循环,直接进入下次循环的判断
for:让变量去取下一个值
while:直接去判断while后面的条件是否为1
break是python关键字,
要求:只能用在循环体中
功能:执行到此,循环直接结束,直接执行其他语句# 找到大于111的数字当中第一个能够被17整除的数
num = 111
while True:
if num % 17 == 0:
print(num)
break
num += 1
for 变量 in 序列:
循环体
else:
代码段
while 条件语句:
循环体
else:
代码段
for循环for x in range(5):
print(x)
else:
print('for循环自然死亡') # 提示循环结束
print('==========') # 不管如何,都会执行
index = 0
while index < 5:
if index == 3:
break
index += 1
else:
print('while自然死亡')