课程笔记--004(程序控制、分支结构、for in、循环嵌套)

目录

    • 一、程序控制
      • 分支结构
        • 条件判断
          • 单分支
          • 双分支
          • 多分支
      • range() 函数
      • for...in循环
      • 循环嵌套
        • continue语句
        • while循环
        • break语句

一、程序控制

流程控制是指在程序运行时,对指令运行顺序的控制。

通常,程序流程结构分为三种:顺序结构、分支结构和循环结构。

顺序结构是程序中最常见的流程结构,按照程序中语句的先后顺序,自上而下依次执行,称为顺序结构;分支结构则根据if条件的真假(True或者False)来决定要执行的代码;循环结构则是重复执行相同的代码,直到整个循环完成或者使用break强制跳出循环。

Python语言中,一般来说,我们使用if语句实现分支结构,用for和while语句实现循环结构。

流程图,是使用图形来表示流程控制的一种方法,是一种传统的算法表示方法,用特定的图形符号和文字对流程和算法加以说明,叫做算法的图,也称为流程图。俗话说千言万语不如一张图。
圆角矩形用来表示“开始”与“结束”。
矩形用来表示要执行的动作或算法。
菱形用来表示问题判断。
平行四边形用来表示输入输出。
箭头用来代表工作流方向。

分支结构

条件判断

条件语句是用来判断给定的条件是否满足,并根据判断的结果(True或False)决定是否执行或如何执行后续流程的语句,它使代码的执行顺序有了更多选择,以实现更多的功能。
一般来说,条件表达式是由条件运算符和相应的数据所构成的,在Python中,所有合法的表达式都可以作为条件表达式。条件表达式的值只要不是False、0、空值(None)、空列表、空集合、空元组、空字符串等,
其它均为True。

单分支

在Python程序中,用if 语句实现。
根据Python的缩进规则,如果if 语句判断是True ,就把缩进的两行print语句执行了,否则,什么也不做。

if <条件判断1>:
    <执行1>
#单向分支选择结构是最简单的一种形式,不包含elif和else,当表达式值为True时,执行语句块,
#否则该语句块不执行,继续执行后面的代码。

如:

age = 20
if age >= 18:                   #注意不要少写了冒号':'
    print('your age is', age)   #your age is 20
    print('adult')              #adult
双分支

双分支语句是由if和else两部分组成,当表达式的值为True时,执行语句块1否则执行语句块2。

if <条件判断1>:
    <执行1>
else:
    <执行2>
age = 3
if age >= 18:
    print('your age is', age)
    print('adult')
else:
    print('your age is', age)
    print('teenager')
salary={'张三':2000,'李四':3000,'王五':4000,'刘三':5000}
print('修改前:',salary)
if salary['张三']>4000:
    salary['张三']=salary['张三']+300
else:
    salary['张三']=salary['张三']*1.1
print('修改后:',salary)
INnum=int(input('请输入一个数:'))
if (INnum % 2==0) and (INnum % 3==0): #注意不要少写了冒号':'
    print('输入的数能同时被2和3整除')
else:
    print('输入的数不能同时被2和3整除')
多分支

多分支选择结构由if、一个或多个elif和一个else子块组成,else子块可省略。一个if语句可以包含多个elif语句,但结尾最多只能有一个else。

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>
age = 3
if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')
#例如:根据你身上带的钱,来决定你今天中午能吃什么
money=float(input('请输入你带的钱:'))
if (money>=1) and (money<=5):
    print('你可以吃包子')
elif (money>5) and (money<=10):
    print('你可以吃面条')
elif money<0:
    print('你的钱不够')
else:
    print('你可以吃大餐')

if 语句执行有个特点,它是从上往下判断,如果在某个判断上是True ,把该判断对应的语句执行后,就忽略掉剩下的elif 和else
if 判断条件还可以简写

x=9
if x:
    print('True') #输出True

只要x 是非零数值、非空字符串、非空list等,就判断为True ,否则为False

birth = input('birth: ')
if birth < 2000:
    print('00前')
else:
    print('00后')

# 输出 TypeError: '<' not supported between instances of 'str' and 'int'
# 此段可正常运行
birth = input('birth: ')
if int(birth) < 2000:
    print('00前')
else:
    print('00后')

range() 函数

range()是python的内置函数,用的地方挺多的,经常会在for循环中作为循环的次数来使用.
range(5) 生成的序列是从0开始小于5的整数:
range(101) 可以生成0-100的整数序列

给定的终止数值并不在要生成的序列里;range(10) 会生成10个值,并且是以合法的索引。生成一个长度为10的序列。range也可以以另一个数字开头,或者以指定的幅度增加(甚至是负数;有时这也被叫做 ‘步进’)

range(start, stop [,step]) 
# start 指的是计数起始值,默认是 0;
# stop 指的是计数结束值,但不包括 stop ;
# step 是步长,默认为 1,不可以为 0 
#range() 方法生成一段左闭右开的整数范围。

for…in循环

for循环的语法结构跟前面讲的if…else有点类似,记的时候不要记混淆了。
for执行时,依次将可迭代对象中的值赋给变量,变量每赋值一次,则执行一次循环体。循环执行结束时,如果有else部分,则执行对应的语句块。else只有在循环正常结束时执行。 如果使用break跳出循环,则不会执行else部分,且根据实际编程需求,else部分可以省略。其结构如下。

for 变量 in 序列或迭代对象:
    循环体(语句块1else:
    语句块2

注意:for和else后面冒号不能丢,循环体、语句块缩进严格对齐。

#例如求1~100的累加和,range()函数是生成1到100的整数,Sum是累加的和。
sum=0
for s in range(1,101):    #循环从1到100,当101时就退出循环
    sum=sum+s   #100次
print(sum) # 输出5050
names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name) # 输出Michael、Bob、Tracy
IntL=[1,2,3,4,5,6,7,8]
s=0
for i in IntL:
    s=s+i
print(s) # 输出36
for i in range(36,66):
    print(i)
    if i % 6==0:
        print('被6整除:',i)
#列表对象中所有偶数除以2
List_sample1=list(range(20))   #创建列表对象
print(List_sample1)
for i in List_sample1:         #从0循环到19
    if i%2==0: 
        List_sample1[i]=int(List_sample1[i]/2)      #除以2取整
else:
    print('Over')
    print(List_sample1)
'''
输出
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
Over
[0, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19]
'''
#工资大于3500的增加10%,低于3500的增加20%
salary={'张三':2000,'李四':3000,'王五':4000,'刘三':5000}
print('修改前:',salary)
for i in salary:
    if salary[i]>3500:
        salary[i]=salary[i]*(1+0.1)
    else:
        salary[i]=salary[i]*(1+0.2)
print('修改后:',salary)
N1=int(input('请输入第一个数 N1:'))
N2=int(input('请输入第二个数 N2:'))
if N1>N2:
    print('第一个数 N1 必须小于第二个数 N2')
else:
    for i in range(N1,N2):
        if i % 6==0:
            print(i)
#要以序列的索引来迭代,您可以将 range() 和 len() 组合如下:
a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
    print(i, a[i])

课程笔记--004(程序控制、分支结构、for in、循环嵌套)_第1张图片

循环嵌套

for循环嵌套是指在for循环里有一个或多个for语句,循环里面再嵌套一重循环的叫双重循环,嵌套两层以上的叫多重循环。

例如使用两个for循环打印出九九乘法表,使用for循环和range()函数,变量i控制外层循环,变量j是控制内层循环的次数。

# 九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print(str(j)+'*'+str(i)+'='+str(i*j),end='  ')
    print()

课程笔记--004(程序控制、分支结构、for in、循环嵌套)_第2张图片

continue语句

在循环过程中,continue语句是结束本次循环(循环体中continue后面的语句不执行),进入下一次循环。

# 输出50到80(不含)的数字中,无法被3整除的数字
for i in range(50,80):
    if i % 3 ==0: # 如果满足该条件,则后面的语句不再执行
        continue
    print(i,end=' ') #输出50 52 53 55 56 58 59 61 62 64 65 67 68 70 71 73 74 76 77 79 
#例如求1!+2!+3!+4!+…+10!的和
summ=0
for j in range(1,11):
    num=1
    for i in range(1,j):
        num=i*num
    summ=summ+num   
print(summ) # 输出409114
# 例如把1~100中不能被3整除且不含字符3的数输出。
for i in range(1,100):
    if (i % 3 ==0) or ( '3' in str(i)):
        continue        
    print(i,end=' ') #输出1 2 4 5 7 8 10 11 14 16 17 19 20 22 25 26 28 29 40 41 44 46 47 49 50 52 55 56 58 59 61 62 64 65 67 68 70 71 74 76 77 79 80 82 85 86 88 89 91 92 94 95 97 98 

while循环

当不知道循环次数,但知道循环条件时,一般使用while语句。与for循环类似,可在循环体中使用break和continue语句,break语句可以提前退出循环。else部分可以省略。

注意:在Python中没有do…while语句。

while 循环条件:
    循环体(语句块1else:
    语句块2
sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum) # 输出2500

break语句

它的作用是跳出循环或终止循环,执行循环后面的语句。

n = 1
while n <= 100:
    if n > 10:   # 当n = 11时,条件满足,执行break语句
        break    # break语句会结束当前整个循环
    print(n)
    n = n + 1
print('END')
'''
输出
1
2
3
4
5
6
7
8
9
10
END
'''
#例如求50以内所有5的倍数的和。
i = 1
sum=0
while i <= 50:
    if i % 5 ==0:
        sum=sum+i
        print(i,end=' ')
    i=i+1
else:
    print('\nOver')
print('sum= ',sum)
'''
输出
5 10 15 20 25 30 35 40 45 50 
Over
sum=  275
'''
#例如求1000以内所有的完数,如6=1+2+3除了它自身以外的因子之和等于它本身叫完数。
for i in range(1,1000):
    sum=0
    fac=[]
    for j in range(1,i):
        if i % j ==0:
            sum=sum+j
            fac.append(j)
    if i==sum:
        print(i,fac,end=' ')
# 输出6 [1, 2, 3] 28 [1, 2, 4, 7, 14] 496 [1, 2, 4, 8, 16, 31, 62, 124, 248] 

你可能感兴趣的:(高级统计编程课程笔记)