循环与分支结构

一、分支结构

1.if-elif-else结构

执行过程:先判断条件语句1是否为True,为true就执行代码段1,整个if-elif-else结束
如果为False,就判断条件语句2是否为True,为True就执行代码段2,整个if-elif-else结束
如果是False,就判断条件语句3是否为True,为True就执行代码段3,整个if-elif-else结束
如果所有条件都不成立,执行else后面的代码段
如:根据年龄范围打印:少年(<14),青年(14~25),壮年(26-35),中年(36-45),老年(>50)

age = eval(input('输入要判断的年龄'))
if age < 14:
    print('少年')
elif 14 <= age <= 25:  # 也可以直接<=25,因为前一个条件在不满足的情况下才会执行第二个if
    print('青年')
elif 26 <= age <= 35:
    print('壮年')
elif 36 <= age <= 50:
    print('中年')
else:
    print('老年')

2.if 嵌套

if结构中的代码块可以再出现其他的If语句
如:判断一个数是否是偶数,并再判断这个数是否是4的倍书

num = eval(input("请输入需要判断的数字"))
if num & 1 == 0:
    print('%d是偶数' % num)
    if num % 4 == 0:
        print('%d是2的倍数也是4的倍数' % num)
    else:
        print('%d是2的倍数但是不是2的倍数' % num)
else:
    print('%d是奇数' % num)
    if num % 10 == 3:
        print('个位数是3')

二、循环结构

1.for循环

语法:
for 变量 in 序列:
循环体

说明:
for - 关键字,固定写法
变量名 - 和声明变量的要求是一样的
in - 关键字,固定写法
序列: - 结果是容器型数据:字符串,列表,元组,字典,集合,迭代器,生成器 range
: - 固定写法
循环体 - 和for保持一个缩进的一条或者多条语句:需要重复执行的语句

执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个值,执行一次循环体
通过控制序列中元素的个数来控制循环的个数

for i in 'python':
    print(i)
'''
i == p,print(i)=p
i == y,print(i)=y
i == t,print(i)=t
i == h,print(i)=h
i == o,print(i)=o
i == n,print(i)=n

range函数:为了让for循环更方便的控制循环次数
range(N正整数) - 产生0~N-1的数据序列
range(4) -> 0,1,2,3
range(M,N) - 产生M~N-1的数据序列
range(3,10) -> 3,,4,5,6,7,8,9
range(m,n,step) - 产生m开始每次+step产生下一个数字到n前一个数为止的序列
range(0,10,2) -> 0,2,4,6,8

for x in range(4):
    print(x)

for x in range(0, 10, 2):
    print(x)

for x in range(3, 10):
    print(x)

作用:产生指定的数字序列;控制循环次数
注意:如果for循环中取出来的变量在循环体中无用,这个变量可以直接用_命名
如:练习:打印0-100中能被3整除的数:

a = []
for i in range(101):
    if i % 3 == 0:
        a.append(i)
print(a)

for x in range(0, 101, 3):
    print(x)

统计 1-100中能被4整除且个位数是2的数字的个数

b = []
for x in range(1, 101):
    if x % 4 == 0 and x % 10 == 2:
        b.append(x)
print('100以内能被4整除且个位数是2的数的个数为%d' % len(b))
print('他们分别是:', b)

运行结果为:

100以内能被4整除且个位数是2的数的个数为5
他们分别是: [12, 32, 52, 72, 92]
[Finished in 0.2s]
count = 0   # 计数的套路
for x in range(1, 101):
    if x % 4 == 0 and x % 10 == 0:
        print(x)
        count += 1

print('一共有%d个' % count)

计算1+、、、、+100

x = 1
for i in range(1, 101):
    sum1 += x
    x += 1
print(sum1)

2.while循环

语法:
while 条件语句:
循环体

说明:
while - 关键字:固定写法
条件语句 - 任何有结果的表达式;数据、已经声明过的变量、运算符表达式(不能是赋值语句)等
: - 固定写法 缩进
循环体 - 和while保持一个缩进的一条或者多条语句;(需要重复执行的语句)

执行过程:
先判断条件语句是否是True,如果为True就执行循环体;执行完循环体再判断条件语句是否为True,
为True继续执行循环体,以此类推,直到条件语句的结果为False 循环结束。

num = 0
while num < 5:
    print('2')
    num += 1

# for 和 while的选择
使用for循环:
a.循环次数确定的时候
b.遍历序列

使用while循环:
a.死循环
b.循环次数不确定
如:不断输入数字,直到输入的数字是0为止
例如:猜数字游戏:游戏开始的时候随机产生一个100以内数字,不断输入数字直到输入的数字和产生的数字一致,游戏结束在没有猜对的情况下,给出大了或者小了的提示信息。

number = randint(0, 100)
value = eval(input('请输入您的数字'))
co = 0
while number != value:
    if value > number:
        print('您猜的数字大了')
        value = eval(input('请再次输入您的数字'))
    elif value < number:
        print('您猜的数字小了')
        value = eval(input('请再次输入您的数字'))
    co += 1
print('猜对了,数字是%d' % number, '共猜%d次' % co)

while常见使用方法:

while True:
   重复执行的代码
   if 退出循环的代码
       break

3.循环嵌套

循环嵌套:外面的循环执行一次,里面的循环要执行完
例如:计算1!+2!+3!+...+10!

sum1 = 0
# 将1~10取出来
for num in range(1, 11):
    # 计算取出来的数的阶层
    sum2 = 1
    for x in range(1, num+1):
        sum2 *= x    # 循环:一直重复执行 乘以X之后再赋值给sum2
    # 将阶乘值加起来
    sum1 += sum2
    print(sum2)

print(sum1)

4.循环中的关键字

1.continue
continue 是循环体内的关键字
作用是:当执行循环体的时候,如果遇到continue,当次循环结束,直接进入到下次循环的判断。

for x in range(4):
    print('===')
    continue
    print('+++')

运行结果不会出现+++
2.break
break也是循环体中的关键字
continue是结束当次循环,
当执行循环体的时候,如果遇到break 那么整个循环直接结束
例如:不断输入数字,直到输入的0为止,然后将输入的所有奇数求和

sum1 = 0
while True:
    value = eval(input('输入数字:'))
    if value == 0:
        break
    if value % 2 == 0:
        continue
    sum1 += value
print(sum1)

3.else

for var in 序列:
    循环体
else:
    代码段
    
while 条件:
    循环体
else:
    代码段
    
    else遇到break就不会执行
    当循环自然死亡,(for 后的变量数据取完了或者while后的条件为false),else后面的代码段会在循环结束后执行
    如果循环是因为遇到break而结束的,else后面的代码段就不会执行
else的意义:通过判断else中的代码有没有执行来判断循环有没有break

作业:

numbers=1 
 for i in range(0,20):   
      numbers*=2  
      print(numbers) 

使numbers1累乘2,20次

summation=0 
num=1 
while num<=100:   
     if (num%3==0 or num%7==0) and num%21!=0:        
           summation += 1   
      num+=1
print(summation)

计算100以内能被3或者7整除和同时被21整除的数字的个数

编程实现题;

  1. 求1到100之间所有数的和、平均值
    for 实现:
sum = 0
count = 0
for i in range(1,101):
    sum+=i
    count+=1
print(sum,sum/count)

while实现:

Sum = 0
count = 0
i = 1
while i <= 100:
    Sum+=i
    count+=1
    i+=1
print(Sum,Sum/count)
  1. 计算1-100之间能3整除的数的和
    for实现:
Sum = 0
for i in range(1,101):
    if i % 3 ==0:
        Sum = Sum + i
print(Sum)

while实现:

i=1
Sum = 0
while i<=100:
    if i % 3 ==0:
        Sum+=i
    i+=1
print(Sum)
  1. 计算1-100之间不不能被7整除的数的和
    while实现:
i=1
Sum = 0
while i<=100:
    if i % 7 !=0:
        Sum+=i
    i+=1
print(Sum)

for实现:


Sum = 0
for i in range(1,101):
    if i % 7 != 0:
        Sum+=i
print(Sum)

你可能感兴趣的:(循环与分支结构)