python--商店购物案例(字典篇)--小黑学习驿站

目录

案例:

def  () 函数说明:

global  内部声明函数


案例:

 水果店老板有N种水果,如果老板要新进一批水果该怎么循环添加?当客人买不同水果的时候该怎样计算?

 思路:

1、首先思路是水果老板店里的水果和价钱做一个字典,然后利用字典循环添加新的水果和价钱

2、创建一个新的空字典,用来循环添加计算客户需求的水果和购买数量,然后将客人买的水果单价和数量对应上,

3、然后进行循环计算,得出最后的总价

A=dict()                                     #水果店老板N种类型水果
de=input('是否添加新品水果:yes/no')
def f():
    B=input('输入需要新添加的水果')
    C=int(input('输入该类水果的价钱'))         #定义需要添加的水果名称和价钱
    if B in A:
        print('水果店中已有该类水果')
    else:
        A[B]=C                                #向字典中添加该类水果
        print(A)
        imp=input('是否继续添加新品水果:yes/no')
        if imp=='yes':
            f()
if de=='yes':
    f()

ins=input('是否购买水果:yes/no')              #定义一个可控变量
Int = dict()                                  #在外面定义一个接收购买的值
# 定义客户购买的水果数量,不过重新购买的话需要清零

def b():
    print(A)
    data = input('购买的水果品种')              # 定义客户购买的水果
    F = int(input('购买水果的数量/斤'))         #定义购买的数量
    if data in A:
        print(A)
        Int[data] = F
        n = len(Int)
        # 计算字典中购买水果的个数,本来想利用个数做循环的,发现不可行
        print(Int)
        sf= 0
        sf+=A[data]*F                        #对应输入data后的value值相乘
        print(sf)                            #这一步已经计算出单价,目前总金额计算如何循环添加

        L = input('是否继续购买:yes/no')
        if L=='yes':
            b()

        else:
            po=0
            for key in Int:                  #key为字典中的键
                po+=A[key]*Int[key]          #循环key对应的value相乘
                print(po)

    else:
        print('输入错误,请重新输入')
if ins=='yes':
    b()
#这里就不写else了,思路是购买一次后将字典清空,然后再次购买重新执行,然后将账单流入数据库

def  () 函数说明:

定义一个可调用的封装函数,类似打包好的快递,分发等于调用

语法:                 def  自定义标识符(参数1,参数2):     

自定义标识符号:就是给封装函数取名字

参数:                  可以写可以不写

 举例不写参数直接调用

def  a():

       print('aa')

a()

输出 aa

举例写参数利用参数调用,a(b,c)为形参,a(1,2)为实参

def  a(b,c):

      A=a+b
      print(A)

a(1,2)

输出 为3

global  内部声明函数

global内部函数声明,指的是可以使函数内部对函数外部的变量进行操作

一般是调用函数做变量处理才会带入变量声明

 举例无内部声明函数,调用函数后,函数内的变量对函数外的变量不会影响

 举例有内部函数声明,调用函数后,内部声明函数会对函数外部的变量造成影响

猜你喜欢

转载自blog.csdn.net/G_WEB_Xie/article/details/128530730