DAY_05-分支、循环

一、分支

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函数
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能做的事情,while都可以做到,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

1.continue
continue是python关键字,
要求:只能用在循环体中

功能
while:执行到此,结束当次循环,直接进入下次循环的判断
for:让变量去取下一个值
while:直接去判断while后面的条件是否为1

2.break
break是python关键字,
要求:只能用在循环体中
功能:执行到此,循环直接结束,直接执行其他语句

# 找到大于111的数字当中第一个能够被17整除的数
num = 111
while True:
    if num % 17 == 0:
        print(num)
        break
    num += 1

3.else
for 变量 in 序列:
循环体
else
代码段
while 条件语句:
循环体
else:
代码段

执行过程:循环过程不变,else后面的代码段,循环自然死亡就会执行,但遇到break结束,就不会执行
for循环

for x in range(5):
    print(x)
else:
    print('for循环自然死亡')  # 提示循环结束
print('==========')   # 不管如何,都会执行

while循环

index = 0
while index < 5:
    if index == 3:
        break
    index += 1
else:
    print('while自然死亡')

你可能感兴趣的:(DAY_05-分支、循环)