Python程序的组织结构

任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成

一、顺序结构

程序从上到下顺序地执行代码,中间没有任何的断和跳转,直到程序结束

eg:把大象装冰箱一共分几步

print('---------程序开始----------')
print('1.把冰箱门打开')
print('2.把大象放冰箱里')
print('3.把冰箱门关上')
print('---------程序结束-------------')

二、对象的布尔值

1、Python一切皆对象,所有对象都有一个布尔值

2、获取对象的布尔值,使用内置函数bool()

3、以下对象的布尔值为False

print(bool(False)) #False
print(bool(0)) #False
print(bool(0.0)) #False
print(bool(None)) #False
print(bool('')) #False
print(bool("")) #False
print(bool([]))    #空列表
print(bool(list())) #空列表
print(bool(()))  #空元组
print(bool(tuple())) #空元组
print(bool({}))  #空字典
print(bool(dict())) #空字典
print(bool(set())) #空集合

三、分支结构(选择结构)

序根据判断条件的布尔值选择性地执行部分代码

明确的让计算机知道在什么条件下,该去做什么

3.1、单分支if结构

1、流程图

2、中文语义:如果......就....
3、语法结构:

if 条件表达式:
    条件执行体

4、eg:从键盘录入一个数 ,表示取款金额,编写程序让计算机判断是否取款成功,并显示余额

money=1000  #余额
s=int(input('请输入取款金额'))  #取款金额
#判断余额是否充足
if money>=s:
   money=money-s
   print('取款成功,余额为:',money)

3.2、双分支if...else结构

1、流程图

2、中文语义:如果......不满足......就......
3、语法结构:

if 条件表达式:
    条件执行体1
else:
    条件执行体2

4、eg:从键盘录入一个整数 ,编写程序让计算机判断是奇数还是偶数

num=int(input('请输入一个整数'))
#条件判断
if num%2==0:
    print(num,'是偶数')
else:
    print(num,'是奇数')

3.3、多分支if...elif...else结构

1、流程图

2、中文语义:

                  成绩是在90分以上吗?不是
                  成绩是80到90分之间吗?不是
                  成绩是70到80分之间吗?不是
                  成绩是60到70分之间吗?不是
                  成绩是60分以下吗?是

3、语法结构:多分支结构,多选一执行

if 条件表达式1:
    条件执行体1
elif 条件表达式2:
    条件执行体2
………… …………
elif 条件表达式N:
    条件执行体N
[else:]
    条件执行体N+1

4、eg:

从键盘录入一个整数 成绩
90-100  A
80-89   B
70-79   C
60-69   D
0-59    E
小于0或大于100 为非法数据(不是成绩的有效范围)

score=int(input('请输入一个成绩:'))
#判断
if score>=90 and score<=100:
    print('A级')
elif score>=80 and score<=89:
    print('B级')
elif score>=70 and score<=79:
    print('C级')
elif score>=60 and score<=69:
    print('D级')
elif score>=0 and score<=59:
    print('E级')
else:
    print('对不起,成绩有误,不在成绩的有效范围')
score=int(input('请输入一个成绩:'))
#判断
if  90<=score<=100:
    print('A级')
elif 80<=score<=89:
    print('B级')
elif 70<=score<=79:
    print('C级')
elif 60<=score<=69:
    print('D级')
elif 0<=score<=59:
    print('E级')
else:
    print('对不起,成绩有误,不在成绩的有效范围')

3.4、if语句的嵌套

1、流程图

2、语法结构:

if 条件表达式1:
    if  内层条件表达式:
        内存条件执行体1
    else:
        内存条件执行体2
else:
    条件执行体

3、eg:

会员  >=200  8折
         >=100   9折
         不打折
非会员  >=200   9.5折
         不打折

answer=input('您是会员吗?y/n')
money=float(input('请输入您的购物金额:'))
#外层判断是否是会员
if answer=='y' : #会员
    if money>=200:
        print('打8折,付款金额为:',money*0.8)
    elif money>=100:
        print('打9折,付款金额为:',money*0.9)
    else:
        print('不打折,付款金额为:',money)
else:  #非会员
    if money>=200:
        print('打9.5折,付款金额为:',money*0.95)
    else:
        print('不打折,付款金额为:',money)

3.5、条件表达式

1、条件表达式是if......else的简写
2、语法结构:

x if 判断条件 else y

3、运算规则

如果判断条件的布尔值为True,条件表达式的返回值为x,否则条件表达式的返回值为False

4、eg:从键盘录入两个整数,比较两个整数的大小

num_a=int(input('请输入第一个整数'))
num_b=int(input('请输入第二个整数'))
print('使用双分支结构进入比较')
if num_a>=num_b:
    print(num_a,'大于等于',num_b)
else:
    print(num_a,'小于',num_b)
print('使用条件表达式进入比较')
print(str(num_a)+'大于等于'+str(num_b) if num_a>=num_b else str( num_a)+'小于'+str(num_b))

四、pass空语句

1、pass语句:语句什么都不做,只是一个占位符,用在语法上需要语句的地方
                     
2、什么时候使用:先搭建语法结构,还没想好代码怎么写的时候 

3、哪些语句一起使用

if语句的条件执行体

for-in语句的循环体

定义函数时的函数体

4、eg:判断是否是会员

answer=input('您是会员吗?y/n')
#判断是否是会员
if answer=='y':
    pass
else:
    pass

五、循环结构

5.1、range()函数的使用

1、range()函数:用于生成一个整数序列

2、创建range对象的三种方式

3、返回值是一个迭代器对象

4、range类型的优点:不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stop和step,只有当用到range对象时,才会去计算序列中的相关元素

5、in与not in 判断整数序列中是否存在(不存在)指定的整数 

6、eg:

'''第一种创建方式,只有一个参数(小括号中只给了一个数)'''
r=range(10)   #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],默认从0开始,默认相差1称为步长
print(r)  #range(0, 10)
print(list(r)) #用于查看range对象中的整数序列    -->list是列表的意思

'''第二种创建方式,给了两个参数(小括号中给了两个数)'''
r=range(1,10)  #指定了起始值,从1开始,到10结束(不包含10),默认步长为1
print(list(r)) #[1, 2, 3, 4, 5, 6, 7, 8, 9]

'''第三种创建方式,给了三个参数(小括号中给了三个数)'''
r=range(1,10,2)
print(list(r)) #[1, 3, 5, 7, 9]

'''判断指定的整数 在序列中是否存在 in ,not in'''
print(10 in r) #False ,10不在当前的r这个整数序列中
print(9 in r) #True,9在当关的r这个序列中

print(10 not in r) #True
print(9 not in r) #False

print(range(1,20,1))   #[1...19]
print(range(1,101,1))  #[1,....100]

5.2、enumerate()函数的使用

1、enumerate()函数:提供序列中每个元素的索引和值

2、enumerate()函数接受两个参数:一个可迭代对象和一个可选的起始索引值。

enumerate(iterable, start=0)

iterable:一个可迭代的对象,如列表、元组等。
start(可选):计数的起始值,默认为0。

3、注:

1)enumerate返回的是一个枚举对象,它是一个可迭代对象。
2) 通过enumerate获取的索引是从start参数指定的值开始的,而不是从可迭代对象的第一个元素开始。
3) 在使用enumerate时,应避免在循环内部修改可迭代对象的长度,否则可能会导致意外的结果。
4、eg:

fruits = ['apple', 'banana', 'cherry']

for index, fruit in enumerate(fruits):
    print(index, fruit)

for index, fruit in enumerate(fruits, start=1):
    print(index, fruit)

 enumerate可以与zip函数结合使用,同时遍历多个列表。

names = ['Alice', 'Bob', 'Charlie']
scores = [90, 95, 88]

for index, (name, score) in enumerate(zip(names, scores), start=1):
    print(f"学生 {index} 名字: {name}, 分数: {score}")

5.3、循环结构

1、反复做同一件事情的情况,称为循环
2、循环结构的流程图

5.3.1、while循环

1、语法结构

while 条件表达式:
    条件执行体(循环体)

2、四步循环法
初始化变量
条件判断
条件执行体(循环体)
改变变量

总结: 初始化的变量与条件判断的变量与改变的变量为同一个

eg:

sum=0 #用存储累加和
'''初始化变量为0'''
a=0
'''条件判断'''
while a<5:
    '''条件执行体(循环体)'''
    sum+=a
    '''改变变量'''
    a+=1
print('和为',sum)

3、while循环的执行流程 

4、eg:计算1到100之间的偶数和

sum=0  #用于存储偶数和
'''初始化变量'''
a=1
'''条件判断'''
while a<=100:
    '''条件执行体(求和)'''
    #条件判断是否是偶数
    if not bool(a%2):               #if a%2==0:
        sum+=a
    '''改变变量'''
    a+=1
print('1-100之间的偶数和',sum)

5.3.2、for-in循环

1、for-in循环
in表达从(字符串、序列等)中依次取值,又称为遍历
for-in遍历的对象必须是可迭代对象
2、for-in的语法结构

for 自定义的变量 in 可迭代对象:
    循环体

3、for-in的执行图 

4、循环体内不需要访问自定义变量,可以将自定义变量替代为下划线_
5、eg:*4

#输出:Python(一行一个字符)
for item in 'Python':  #第一次取出来的是P ,将P赋值值item,将item的值输出
    print(item)

#range() 产生一个整数序列,--》也是一个可迭代对象
for i in range(10):
    print(i)

#如果在循环体中不需要使用到自定义变量,可将自定义变量写为“_”
for _ in range(5):
    print('人生苦短,我用Python')

#使用for循环,计算1到100之间的偶数和
sum=0  #用于存储偶数和
for item in range(1,101):
    if item %2==0:
        sum+=item
print('1到100之间的偶数和为:',sum)

输出100到999之间的水仙花数
举例:153=3*3*3+5*5*5+1*1*1

for item in range(100,1000):
    ge=item%10       #个位
    shi=item//10%10   #十位
    bai=item//100   #百位
    #判断
    if ge**3+shi**3+bai**3==item:
        print(item)

5.3.3、选择结构的if与循环结构while的区别

If是判断一次,条件为True执行一行
while是判断N+1次,条件为True执行N次 

5.4、break、continue与else语句

5.4.1、流程控制语句break

用于结束循环结构,通常与分支结构if一起使用

5.4.2、流程控制语句continue

1、用于结束当前循环,进入下一次循环,通常与分支结构中的if一起使用 

2、eg:

要求输出1到50之间所有5的倍数,  5,10,15,20,25....
5的倍数的共同点:  和5的余数为0的数都是5的倍数
什么样的数不是5的倍数,   1,2,3,4,6,7,8,9.。。  与5的余数不为0的数都不是5的倍数
要求是使用continue实现

for item in range(1,51):
    if item%5==0:
        print(item)

print('-------------使用continue-----------------')
for item in range(1,51):
    if item%5!=0:
        continue
    print(item)

5.4.3、else语句

1、与else语句配合使用的三种情况

2、eg:从键盘输入密码,判断密码是否正确

while a<3:
    pwd=input('请输入密码')
    if pwd=='8888':
        print('密码正确')
        break
    else:
        print('密码不正确')
    '''改变变量'''
    a+=1
else:
    print('对不起,三次密码均输入错误')
for item in range(3):
    pwd=input('请输入密码:')
    if pwd=='8888':
        print('密码正确')
        break
    else:
        print('密码不正确')
else:
    print('对不起,三次密码均输入错误')

5.5、嵌套循环

5.5.1、嵌套循环

循环结构中又嵌套了另外的完整的循环结构,其中内层循环做为外层循环的循环体执行

eg:打印九九乘法表

for i in range(1,10): #行数
    for j in range(1,i+1):
        print(i,'*',j,'=',i*j,end='\t')
    print()

5.5.2、二重循环中的break和continue

二重循环中的break和continue用于控制本层循环

eg:

for i in range(5):  #代表外层循环要执行5次
    for j in range(1,11):
        if j%2==0:
            #break      #(1)break
            continue    #(2)continue
            #比较两者的区别
        print(j,end='\t')
    print()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值