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='\n', 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

猜你喜欢

转载自www.cnblogs.com/woaixuexi9999/p/9206094.html
今日推荐