python学习(二)分支结构和循环

目录

1.程序的组织结构

        1.1 顺序结构

        1.2 选择结构(分支结构)

                1.2.1 单分支结构

                1.2.2 双分支结构

                1.2.3 多分支结构

                1.2.4 分支结构-嵌套if的使用

                1.2.5 条件表达式

                1.2.6 pass语句

        1.3 循环结构

                1.3.1 while循环

                1.3.2 for -in循环 

2.bool对象的布尔值 

3.range()函数

4.流程控制语句 

        4.1 break语句

        4.2 continue语句

        4.3 else语句

5.嵌套循环

6.二重循环中的break和continue


1.程序的组织结构

         计算机的基本结构:顺序结构、选择结构、循环结构

        1.1 顺序结构

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

        1.2 选择结构(分支结构)

                1.2.1 单分支结构

                表示:如果...就...

money=100
s=int(input('请输入你的取款金额'))
if money>=s:
    money = money - s
    print('您的余额剩余:',money)
#结果:
#请输入你的取款金额120,没有后续了


#请输入你的取款金额40
您的余额剩余: 60

                1.2.2 双分支结构

        表示:如果...不满足...就....
                if 条件表达式:
                         条件执行体1
                else:
                        条件执行体2

money=100
s=int(input('请输入取款金额'))
if money>=s:
    money=money-s
    print('取款成功,所剩余额为:',money)
else:
    print('余额不足,所剩余额为:',money)
#结果:
输入金额小于等于100,如10
请输入取款金额10
取款成功,所剩余额为: 90
#输入金额大于100,如:220
请输入取款金额200
余额不足,所剩余额为: 100

                1.2.3 多分支结构

        语法结构:
                if 条件表达式1:          
                    条件执行体1
              elif 条件表达式2:
                    条件执行体2
             elif 条件表达式N:
                    条件执行体N
             [else:]
                    条件执行体N+1

#录入一个整数成绩,判断成绩的范围
#90-100为A;80-89为B,70-79为C,60-69为D,0-59为E,小于0或者大于100为非法数据
a=int(input('请录入一个整数成绩'))
if a>=90 and a<=100:
    print('您的成绩为A等')
elif 80<=a<=89:
    print('您的成绩为B等')
elif 70<=a<=79:
    print('您的成绩为C等')
elif 60<=a<=69:
    print('您的成绩为D等')
elif 0<=a<=59:
    print('您的成绩为不合格')
else:print('您输入的数错误,不在0-100之间')

                1.2.4 分支结构-嵌套if的使用

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

#会员:购买金额大于200,打8折,大于等于100,打9折;
#非会员:购买大于等于200,打9.5折,其余情况不打折
answer=input('您是会员吗?y/n')
money=float(input('您的购物金额是:'))
if answer=='y':
    print('您是会员')
    if money>=200:
        print('8折,付款金额为:',money*0.8)
    elif 100<=money<200:
        print('9折,付款金额为:',money*0.9)
    else:print('小于100不打折哦,付款金额为:',money)
else:
    print('您是非会员')
    if money>=200:
        print('打9.5折,付款金额为:',money*0.95)
    else:
        print('不打折')

                1.2.5 条件表达式

        判断条件表达式后,根据真、假来执行对应侧的代码。条件表达式为真,则执行左侧的代码,条件表达式为假,则执行右侧的代码。

a=int(input('请输入一个整数'))
b=int(input('请再输入一个整数'))
"""if a>=b:
    print(a,'大于等于',b)
else:
    print(a,'小于',b)
"""
print('用条件表达式来进行比较')#简化上述注释掉的代码
print((a,'大于等于',b) if a>=b else (a,'小于',b))#条件判断的结果为True则执行左侧的代码;条件判断结果为False,则执行右侧的代码
#转换类型后,输出结果更美观
print((str(a)+'大于等于'+str(b)) if a>=b else (str(a)+'小于'+str(b)))
#结果
请输入一个整数10
请再输入一个整数23
用条件表达式来进行比较
(10, '小于', 23)
10小于23

这边条件表达式会受bool对象值的影响。比如if...else,结果为真或假,bool值的真假,会影响走的哪个执行体语句

age=int(input('输入您的年龄'))
if age:
    print('你好')
else:
    print('年龄为:',age)
#结果,输入年龄为0则执行的是else的语句,因为bool(0)的值是False,所以才执行else这句
输入您的年龄0
年龄为: 0
#而,如果输入的年龄为18,bool(18)的值是True,所以执行的是if的语句,所以输出的是:你好
输入您的年龄18
你好

                1.2.6 pass语句

        语句只是一个占位符,什么都不用做,用在语法上需要语句的地方
        什么时候使用:先搭建语法结构,还没想好代码怎么写的时候
        哪些语句一起使用:
                    if语句的条件执行体
                    for-in语句的循环体
                    定义函数时的函数体

        1.3 循环结构

                1.3.1 while循环

                while 条件表达式:

                        条件执行体(循环体)

i=0
while i<=4:
    i+=1
    print(i)
print(i)
#结果:
1
2
3
4
5
5

       使用while循环去计算 1-100之间的偶数求和:

四步循环法:

        初始化变量

        条件判断

        条件执行体(循环体)

        改变变量

sum=0
i=0
while i<=100:
    if i%2==0:
        sum+=i
    i+=1
print(sum)
#结果:
2550

或者如下代码:因为i%2的bool值为0是false,所以进入循环体的是非0,非0的话那么i就是奇数,所以当i%2等于0的计算的是奇数和;所以要算偶数和就要加上not ,即not false为true。

sum=0
i=0
while i<=100:
    if not i%2:
        sum+=i
    i+=1
print(sum)

                1.3.2 for -in循环 

        in表达从(字符串,序列等)中依次取值,又称为遍历

        for -in 遍历的对象必须是可迭代对象

for -in的语法结构:

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

             循环体

for i in '好好学习':
    print(i)

for i in range(1,5):
print(i)
#range()函数是一个可迭代的对象,range(1,5)里面是(1,2,3,4),整体表示是i在循环中执行的次数4次
#结果:
好
好
学
习
1
2
3
4

 range()函数祥看第三点。

循环体内不需要访问自定义变量,可以将自定义变量替代为下划线

for _i in range(3):
    print('你在干嘛')

for _a in range(1,3):
    print('去吃饭')
#结果:
你在干嘛
你在干嘛
你在干嘛
去吃饭
去吃饭

使用for -in循环去计算1-100之间的偶数和 

sum=0
i=0
for i in range(1,101):
    if i%2==0:
        sum+=i
print(sum)
#结果:
2550

使用for -in去得出100-999之间的水仙花数(个位数的三次方+十位数的三次方+百位数的三次方=该数) 

for i in range(100,1000):
    g=i%10
    s=i//10%10
    b=i//100
    #print(b,s,g)
    if b**3+s**3+g**3==i:
        print(i)
#结果:
153
370
371
407


2.bool对象的布尔值 

        python一切皆有对象,所有的对象都有一个布尔值
        获取对象的布尔值:使用内置函数bool()
        以下对象的布尔值为False,其他的都为true。

False,数值(),None,空字符串,空列表,空元组,空字典,空集合

#测试对象的bool值
print(bool(False))
print(bool(0))#数值0
print(bool(0.0))#数值0.0
print(bool(None))
print(bool(''))#空字符串(长度为0的字符串对象)
print(bool(""))#空字符串(长度为0的字符串对象)
print(bool([]))#空列表
print(bool(list()))#空列表
print(bool(()))#空元组
print(bool(tuple()))#空元组
print(bool({}))#空字典
print(bool(dict()))#空字典
print(bool(set()))#空集合
#结果:
False
False
False
False
False
False
False
False
False
False
False
False
False

3.range()函数

        range()函数

        用于生成一个整数序列

        创建range对象的三种方式:

        (1)range(stop):创建一个(0,stop)之间的整数序列步长为1

        (2)range(start,stop):创建一个(start,stop)之间的整数序列,步长为1

        (3)range(start,stop,step):创建一个(start,stop)之间的整数序列,步长为step

        返回值是一个迭代器对象

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

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

r=range(10)
print(r)
print(list(r))

q=range(2,10)
print(q)
print(list(q))

e=range(1,10,2)
print(list(e))
print(10 in e)
#结果:
range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(2, 10)
[2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5, 7, 9]
False

4.流程控制语句 

        4.1 break语句

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

        密码输入三次,三次错误则退出程序,如果一旦正确就退出程序

(for -in)循环的方式:

for i in range(3):
    pwd=input('请输入密码')
    if pwd=='1234':
        print('密码正确')
        break
    else:print('密码输入错误')
#结果:
请输入密码12
密码输入错误
请输入密码33
密码输入错误
请输入密码1234
密码正确

        while循环的方式:

i=0
while i<3:
    pwd=input('请输入密码')
    if pwd=='1234':
        print('密码正确')
        break
    else:print('密码输入错误')
    i+=1
#结果:
请输入密码1
密码输入错误
请输入密码1
密码输入错误
请输入密码1
密码输入错误

        4.2 continue语句

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

例子:要求输入1-50之间的所有5的倍数

for i in range(1,51):
    if i%5!=0:
        continue
    else:print(i)

        4.3 else语句

if else。

while else;for else:如果没有碰到break时执行else

for..else:

for i in range(3):
    pwd=input('请输入密码')
    if pwd=='1234':
        print('密码正确')
        break
    else:print('密码不正确')
else:print('三次密码均输入错误')
#结果:
请输入密码q去、
密码不正确
请输入密码1
密码不正确
请输入密码1
密码不正确
三次密码均输入错误

while..else:

i=0
while i<3:
    pwd=input('请输入密码')
    if pwd=='1234':
        print('密码正确')
        break
    else:print('密码错误')
    i+=1
else:print('输入三次密码均错误')

5.嵌套循环

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

示例:输出三行四列的加油

#输出三行四列的循环
for i in range(1,4):#行数要执行三次,一次是一行
    for a in range(1,5):
        print('加油',end='\t')#不换行输出
    print()#换行
#结果
加油	加油	加油	加油	
加油	加油	加油	加油	
加油	加油	加油	加油	

示例:输出九九乘法表 

for i in range(1,10):#行数要执行九次,一次是一行
    for a in range(1,i+1):#星的个数与行数相等,所以第一行从从1开始,到1结束,即(1,i+1)
        print('*',end='\t')
    print()
#结果:
*	
*	*	
*	*	*	
*	*	*	*	
*	*	*	*	*	
*	*	*	*	*	*	
*	*	*	*	*	*	*	
*	*	*	*	*	*	*	*	
*	*	*	*	*	*	*	*	*
for i in range(1,10):#行数要执行九次,一次是一行
    for a in range(1,i+1):#星的个数与行数相等,所以第一行从从1开始,到1结束,即(1,i+1)
        print(i,'*',a,'=',i*a,end='\t')
    print()
#结果:
1 * 1 = 1	
2 * 1 = 2	2 * 2 = 4	
3 * 1 = 3	3 * 2 = 6	3 * 3 = 9	
4 * 1 = 4	4 * 2 = 8	4 * 3 = 12	4 * 4 = 16	
5 * 1 = 5	5 * 2 = 10	5 * 3 = 15	5 * 4 = 20	5 * 5 = 25	
6 * 1 = 6	6 * 2 = 12	6 * 3 = 18	6 * 4 = 24	6 * 5 = 30	6 * 6 = 36	
7 * 1 = 7	7 * 2 = 14	7 * 3 = 21	7 * 4 = 28	7 * 5 = 35	7 * 6 = 42	7 * 7 = 49	
8 * 1 = 8	8 * 2 = 16	8 * 3 = 24	8 * 4 = 32	8 * 5 = 40	8 * 6 = 48	8 * 7 = 56	8 * 8 = 64	
9 * 1 = 9	9 * 2 = 18	9 * 3 = 27	9 * 4 = 36	9 * 5 = 45	9 * 6 = 54	9 * 7 = 63	9 * 8 = 72	9 * 9 = 81	

6.二重循环中的break和continue

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

break:

for i in range(5):
    for a in range(1,11):
        if a%2==0:
            break
        print(a)
#结果:
1
1
1
1
1
#可查看断点,当i=1,a=1时,a%2!=0,所以是打印a
#当i=1,a=2时,a%2==0,所以是break,但是不会去打印a,而是退出内层循环,进入for循环,即i=2,a=1,继续a%2!=0循环往复。
#所以内存循环一直都是循环一次,而不会影响外层循环,所以fou的i一直在循环5次得出5个1

continue:当层循环结束后再一次继续循环

for i in range(5):
    for a in range(1,11):
        if a%2==0:
            continue
        print(a,end='\t')
    print()
#结果:
1	3	5	7	9	
1	3	5	7	9	
1	3	5	7	9	
1	3	5	7	9	
1	3	5	7	9

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值