• 5.条件与循环语句


    1、条件语句

    形式:

    if 判断语句 :
    	执行语句1
    elif 判断语句2:
    	执行语句2
    elif 判断语句3:
    	执行语句3
    #...
    else:
    	执行语句4
        
    占位符 pass

    意义:

    if(如果) A :
    
    	就 B(当A为True)
    
    elif(或者) C :
    
    	就 D(当A为False并且C为True)
    
    else(否则) :
    	就E(当A和C都为False)

    example:

    '''
    需求: 1.年龄大于12岁,卖成人票。年龄大于60,就不需要买票
          2. 4-12 ,儿童票
          3.0-3 ,不买票
    '''
    
    #1
    if a>=12:
       print('你好先生,您需要购买成人票')  #1
    elif a>=4 and a<12:
        print('您好小朋友,您需要购买儿童票') #2
    else:
        print('你好baby,您不需要买票') #3
    
    
    
    # 随机数
    import random
    r =random.randint(0,100)
    print('随机数',r)
    a = r
    
    
    # 2
    if a>=12:
        if a>=60:
            print('您好,你的年龄 %s,不需要买票'%a) #4
        else:
            print('你好先生 %s,您需要购买成人票'%a)  #1
    elif a>=4 and a<12:
        print('您好小朋友 %s,您需要购买儿童票'%a) #2
    else:
        print('你好baby %s,您不需要买票'%a) #3
    
    ## pass  占位,什么事都不做
    a = 1
    b = 2
    
    if a>b:
        pass
    elif a<b:
        pass
    else:    # =
        pass
    
    if a>b:
        print('a大于b')
    elif a<b:
        print('a小于b')
    else:    # =
        print('a等于b')

    2、循环语句

    1.while循环

    while 判断语句A:
        执行语句B
    elseprint('程序正常结束,执行else')
    #while
    ''' 
    while True:    #死循环
        print('hello')
    
    '''
    a = 1
    while a<5:    #写while 循环的时候,一定要写一个终止条件
        print('hello',a)
        a = a+1

    注意:循环一般要有终止条件

    2.break和continue

    while True:
        break   #终止循环
        continue  #跳过本次循环
        
    #break 会终止循环,循环不再执行
    #continue是跳过本次循环,循环继续
    print('=========break==========')
    ##break   强行终止 循环 ,相当于 Ctrl +c
    b = 0
    while True:    #死循环
        print('hello',b)
        if b>5:    # 0
            break
        b +=1
    
    print('=========continue==========')
    ##continue 跳过本次循环,进入下一个循环
    #打印出10以内的奇数
    m = 0
    while m <10:
        m += 1
        if m%2 ==0:
           continue
        print(m)
    
    
    
     

    3.range

    range(10) #表示0 - 9 这个范围
    range(1,10) #表示 1 - 9这个范围
    range(1,10,2) #表示 1 - 9这个范围,并且以步长2进行取数
    range(10)  #范围  左闭右开
    list(range(10))
    list(range(5,10))
    list(range(5,10,2))
    
    print('=========for==========')
    for i in range(10):
        print(i)
    
    
    
     

    4.for循环

    for item in iterable:
        执行语句
    else:
      print('程序正常结束,执行else')
    
    #循环条件可以是任何可迭代的对象,如:序列类型,集合和字典
    #列表
    li =['a','b','c']
    for f in li:
        print(f)
    
    #字符串
    for s in 'abcdefgh':
        print(s)
    
        
    #字典
    di ={'ai':1,'bi':2,'ci':3}
    for d in di:  #遍历迭代对象
        print(d)
        print(di[d])
    
    ###
    
    for f in li:
        print(f)
        f =100
        print(f)
    
    ##for  打印10以内奇数
    
    for i in range(1,11):  #for自动结束,while自己写终止条件
        if i % 2 ==0:
            continue
        print(i)
    
    ### 嵌套循环,5小组,每个8位同学
    for i in range(5):
        print('第 %s小组'%(i+1))
        for j in range(8):
            print('第 %s小组,第 %s同学'%((i+1),(j+1)))
    
    
    for i in range(5):
        print('第 %s小组'%(i+1))
        n=1
        while n<=8:
            print('第 %s小组,第 %s同学'%((i+1),n))
            n +=1
    
    
    
     

    5.else

    while True:
        break
    else:
        print('OK')
    
    #for   
    for item in iterable:
        break
    else:
        print('OK')
      
    """ 
    只有正常结束的循环,非break结束的循环才会执行else部分
    """


    #else  只有正常结束的循环,非break结束的循环才会执行else部分
    
    a =0
    while a<10:
        print(a)
        a +=1
    else:
        print('while 循环正常结束')
    
    b =0
    while b<10:
        print(b)
        b +=1
        if b>5:
            break
    else:
        print('while 循环正常结束')
    
    
    #for
    for i in range(10):
        print(i)
    else:
        print('for 正常结束')
    
    
    for i in range(10):
        print(i)
        if i>5:
            break
    else:
        print('for 正常结束')
    
    

    3、print方法扩展

    print(...)
        print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False)
        
        Prints the values to a stream, or to sys.stdout by default.
        Optional keyword arguments:
        file:  a file-like object (stream); defaults to the current sys.stdout.
        sep:   string inserted between values, default a space.
        end:   string appended after the last value, default a newline.
        flush: whether to forcibly flush the stream.
    print('aaaaa',end='') #打印后不会回车
    print('bbbbbbb')
    
    print('aaa',1)
    print('aaa',1,sep='*********') #会以****隔开两个打印的对象

    4、作业

    1.输出9*9 乘法口诀
    for x in range(1,10):
        for y in range(1,x+1):
            print('%d×%d =' % (x,y),x*y,end=' ')
        print('')
    View Code
    
    
    2.help(enumerate)学习怎么使用enumerate.试着对prd_l1使用enumerate()这个内置函数。(提示:使用for循环)
    prd_l1 = [
        ('小时包流量/小时',5),
        ('日包流量/日',10),
        ('月末嗨翻天10天10G',20),
        ('闲时流量1G',10),
        ('30元5个G',30),
        ('50元50个G',50),
    ]
    for i in range(len(prd_l1)):
        print(i,prd_l1[i])
    for i in enumerate(prd_l1):
        print(i)         
    for i,info in enumerate(prd_l1):
        print(i,info)
     #enumerate逼格提升利器
    b=enumerate('abcdefg')
    View Code
    
    
    3.流量套餐订购小程序:1.运行程序后,提示输入你现有的话费余额。
                          2.输入余额后打印套餐列表,列表使用第二题的prd_l1。
                          3.用户可以根据套餐编号订购套餐,如果余额足够则打印出扣款金额和话费余额,
                            余额不够则提示用户余额不够。
                          4.在选择套餐编号时,用户可以通过输入e退出订购程序,退出时,打印出已订购套餐和余额。
    prd_l1 = [
        ('小时包流量/小时',5),
        ('日包流量/日',10),
        ('月末嗨翻天10天10G',20),
        ('闲时流量1G',10),
        ('30元5个G',30),
        ('50元50个G',50),
    ]
    shopping_l2 = []                        #用户已经购买的套餐
    phone_fare = input('>>>输入话费余额:')  
    
    if phone_fare.isdigit():
        phone_fare = int(phone_fare)            #str--》int
        while 1:                                #多次循环
            for index,info in enumerate(prd_l1):#打印出套餐列表
                print(index,':',info)
            user_want = input('输入需要订购的套餐编号:')
            if user_want.isdigit():             #str--》int
                user_want = int(user_want)      
                if user_want >= 0 and user_want < len(prd_l1): #判断用户输入(0到列表长度则进入循环)
                    prd = prd_l1[user_want]                 #自己pirnt(prd)查看
                    if prd[1]<= phone_fare:                 #判断余额,如足够加入shopping_l2列表,和完成扣款   
                        shopping_l2.append(prd)
                        phone_fare -= prd[1]
                        print('套餐订购成功,已支付金额%s元,您当前的话费余额是%s' % (prd[1],phone_fare))
                    else:                                   #钱不够的情况
                        print('这点钱都不够你买个球啊,去用联通吧')
                        
                else:                                    #编号输入不是0-5的情况
                    print('编号不存在,请输入正确的商品编号')
            elif user_want == 'e':                 #如果输入e,则打印已购买套餐和余额
                for p in shopping_l2:
                    print(p)
                print('老铁,您当前话费余额是:', phone_fare)
                exit()                       #退出
            else:                            #编号输入不是0-5和e的情况   
                print('老铁,扎心了,输入不合法,请重新输入')
    
    #
    # 这个程序到此为止了吗?
    
                #目前只有一级菜单,而事实上10086短信可以给出N级菜单。
                #代码的重构,优化
                #这是面向过程。面向 对象编程的程序代码又是另一种风格
    View Code
  • 相关阅读:
    二分查找
    django 中间件
    logging 模块
    linux ssh keys
    spark(一) build
    hadoop中遇到的问题。
    算法----字符串拷贝
    phpmailer 实现发送邮件
    thinkphp操作数据库
    thinkphp 使用过程中遇到的一个小函数
  • 原文地址:https://www.cnblogs.com/woaixuexi9999/p/9206094.html
Copyright © 2020-2023  润新知