python学习 第四章 流程控制

文章目录

    • 4.1 顺序结构
    • 4.2 if分支结构
      • 4.2.1 if的条件类型
      • 4.2.2 Pass 语句
    • 4.3 断言
    • 4.4 循环结构
      • 4.4.1 while循环
      • 4.4.2 for-in循环
      • 4.4.3 使用for-in循环遍历列表与元组
      • 4.4.4 使用for-in循环遍历字典
      • 4.4.5 循环使用else
      • 4.4.6 嵌套循环
      • 4.4.7 for表达式
    • 4.5 控制循环结构
    • 4.6 实例

4.1 顺序结构

最常见的程序包结构

4.2 if分支结构

s_age = input('请输入您的年龄')
age = int(s_age)
if age >20:
    print('年龄已经大于20岁了')

if的用法在前面的时候已经多次用过,这里不做过多的介绍,介绍一些小的点

4.2.1 if的条件类型

在Python当中if的条件判断不仅有False和True,可以是任意类型,当以下表达式作为if的条件判断时,也会被当做False来处理:
False None 0 " " () [] {}

s = ''
if s:
    print('s不是空')
else:
    print('s是空')

my_tuple = ()
my_list =[]
my_dict={}
if my_tuple:
    print('元组不是空')
else:
    print('元组是空')

if my_list:
    print('列表不是空')
else:
    print('列表是空')
if my_dict:
    print('字典不是空')
else:
    print('字典是空')

4.2.2 Pass 语句

Python中提供了Pass语句用来进行占位符操作,不会执行任何操作,但是会占据相应位置

4.3 断言

断言类似于if分支,他用于对一个bool类型的表示式进行断言,如果bool表达式的值是True则会继续向下进行,如果是False就是包AssertionError的错误

s_age = input()
age = int(s_age)
assert 20<age<30
print('年靓在20到80之间')

python学习 第四章 流程控制_第1张图片

4.4 循环结构

4.4.1 while循环

while循环同其他语言类似,也不做过多介绍,举一个小的例子,用while循环来遍历一个元组

my_tuple = ('pwc',123,'oi')
i= 0
while i<len(my_tuple):
    print(my_tuple[i])
    i+=1

在这里插入图片描述

4.4.2 for-in循环

for- in循环是专门用于遍历范围,列表元组,和字典等可迭代对象包含的元素,

  1. for in 循环当中的变量值受for-in循环控制,该变量将会在每次循环开始时自动被赋值,因此程序不应该在循环中对该变量赋值
  2. for in 循环可用于遍历任何可迭代对象。
    for循环可以用于遍历范围:
s_max = input('请输入您想要计算的程玠')
mx = int(s_max)
result = 1
for num in range(1,1+mx):

    result*=num

print(result)

在这里插入图片描述

4.4.3 使用for-in循环遍历列表与元组

在使用for-in循环遍历列表和元组的时候,列表或元组有几个元素,for-in循环的循环体就会执行几次,针对每个元素执行一次,循环计数器就是一次被赋值为元素的值

my_tuple = ('pwc',4,5,8)
for i in my_tuple:
    print(i)

在这里插入图片描述
循环列表也是相同的原理

my_list = ['ewieu',789,'dwea','wae']
for els in my_list:
    print(els)

python学习 第四章 流程控制_第2张图片
当然除了直接将元组或者列表中的值直接赋值以外,还可通过index索引来对元素进行访问

my_list = ['ewieu',789,'dwea','wae']
# for els in my_list:
#     print(els)
for i in range(len(my_list)):
    print(my_list[i])
    

在这里插入图片描述

4.4.4 使用for-in循环遍历字典

my_dict = {'语文':85,'英语':15,'数学':78}
for key,value in my_dict.items():
    print('key',key)
    print('value',value)
print('-'*30)
for key in my_dict.keys():
    print('key',key)
print('-'*30)
for value in my_dict.values():
    print('value',value)

python学习 第四章 流程控制_第3张图片
假如需要实现一个程序,用于统计列表中各元素出现的次数,由于并清楚列表中有多少个元素, 因此可以考虑定义一个字典,用key值来存放元素种类,用value值来存放出现次数。

src_list = [12,45,4.5,78,'fkit',78,2.4,'flit',4.5]
statistics = {}
for ele in src_list:
    if ele in statistics:
        statistics[ele]+=1
    else:
        statistics[ele]=1

for key,value in statistics.items():
    print(key,'+',value)

python学习 第四章 流程控制_第4张图片

4.4.5 循环使用else

在Python当中,不光if语句可以使用else使用while也可以使用else

4.4.6 嵌套循环

4.4.7 for表达式

for表达式与普通for循环之间的区别主要有两点:

  • 在for关键字之前定义一个表达式,该表达式通常会包含循环计数器
  • for表达式没有循环体,因此不需要冒号
    for表达式最终返回的是列表!!!
a_range = range(10)
a_list = [x*x for x in a_range]
print(a_list)

在这里插入图片描述

a_range = range(10)
a_list = [x*x for x in a_range if x%2==0]
print(a_list)

]
如果将for表达式的方括号换成圆括号将不会生成一个列表,而会生成一个生成器(generator)

4.5 控制循环结构

break, continue,return

4.6 实例

repository = dict()
shop_list = []

def init_repository():
    #初始化很多商品,每个元组代表一个商品
    goods1 = ('1000001','疯狂1',88.8)
    goods2 = ('1000002','疯狂2',59.5)
    goods3 = ('1000003','疯狂3',78.8)
    goods4 = ('1000004','疯狂4',12.5)
    goods5 = ('1000005','疯狂5',8.8)
    goods6 = ('1000006','疯狂6',19.5)

    #把商品入库(放入dict)条码作为key
    repository[goods1[0]]=  goods1
    repository[goods2[0]] = goods2
    repository[goods3[0]] = goods3
    repository[goods4[0]] = goods4
    repository[goods5[0]] = goods5
    repository[goods6[0]] = goods6

def show_goods():
    print('欢迎光临,私人超市')
    print('疯狂超市的商品清单')
    print('%13s%40s%12s'%('条码','商品条码','单价'))

    for goods in repository.values():
        print("%15s%40s%12s"%goods)
def show_list():
    print('='*100)
    if not shop_list:
        print('还没有购买商品')
    else:
        title = '%-5s|%15s|%40s|%10s|%4|%|10s' % \
                ('ID','条码','商品名称','单价','数量','小计')
        print(title)
        print('-'*100)
        sum = 0

        for i ,item in enumerate(shop_list):
            id = i+1
            code = item[0]
            name = repository[code][1]
            price = repository[code][2]
            number = item[1]
            amount = price*number
            sum = sum +amount
            line ='%-5s|%17s|%40s|%12s|%6s|%12s'% \
                  (id ,code,name,price,number,amount)
            print(line)
        print('-'*100)
        print('                              总计、:',sum)
    print('='*100)
def add():
    code =input('请输入商品的条码:\n')
    if code not in repository:
        print('条码输入错误')
        return
    goods = repository[code]
    number = input('请输入购买数量:\n')
    shop_list.append([code,int(number)])
def edit():
    id = input('请输入要修改的购物明细的ID:\n')
    index = int(id)-1
    item =shop_list[index]
    number = input('请输入新的购买数量')
    item[1] = int(number)
def delete():
    id = input('请输入要删除的购物明细项的ID:')
    index = int(id)-1
    del shop_list[index]
def payment():
    show_list()
    print('\n'*3)
    print('欢迎下次光临')
    import os
    os._exit(0)
cmd_dict = {'a':add,'e':edit,'d':delete,'p':payment,'s':show_goods}
def show_command():
    cmd = input("请输入操作指令:\n" +
                '添加(a) 修改(e) 删除(d) 结算(p) 超市商品(s)\n')
    if cmd not in cmd_dict:
        print('不要玩,好不好')
    else:
        cmd_dict[cmd]()
init_repository()
show_goods()
while True:
    show_list()
    show_command()

你可能感兴趣的:(Python学习)