python基础03

购物车完善


  #!/bin/bash
# -*- coding:utf-8 -*-

# var
goods_list = {
	"something1": 100,
	"something2": 20,
	"something3": 50,
	"weed": 75,
	"Marlboro": 15,
	"heroin": 325
}
goods_name = list(goods_list.keys()) #获取商品名并转为列表
goods_index = 0 #初始化商品索引变量,提供打印菜单使用
# function
def buy_something(blist,bname,bprice): #提供购物车列表,提供购买商品名称,提供商品价格,然后返回购买后的购物车列表
	if blist.keys(): #监测商品列表是不是为空(相当于第一次购买)
		for x in blist.keys(): #假如已经购买过了,就遍历购物车中的商品名字
			if bname == x: #如果遍历到已经购买了商品,就把商品购买数量+1,然后加上商品价格
				blist[bname][0] += 1
				blist[bname][2] += blist[bname][2]
				break
			else: #如果没有遍历到就继续
				continue
		else: #如果都没有遍历到,就相当于在购物车再加一个新商品
			blist[bname] = [1,bprice,bprice] #bought list add goods
	else:
		blist[bname] = [1,bprice,bprice] #bought list add goods
	return blist 

# get salary
while True: #建立循环
	user_salary = input("input your salary:") #请求用户输入金钱
	if user_salary.isdigit(): #如果输入类型是数字
		user_salary = int(user_salary) #强制转换类型为整数型
		break #跳出循环

# 打印商品列表
print("--------goods store--------")
for x in goods_name: #遍历goods_name这个列表
	print("[%s]. 	 %s ---- %s" % (goods_index, x, goods_list[x])) #输出各商品购买索引,名称,商品价格
	goods_index += 1 #商品索引自增
print("--------goods store--------")

# user buy something
# bought var
bought_list = {} #建立购物车
# start buy
while True: #建立循环 让我用户购买商品
	bought_index = input("choice goods(index/name/q):") #请求用户输入购买索引
	if bought_index.isdigit():  #判断用户输入的是不是数字、字符、qQquit,如果不是就请求下一次输入
		bought_index = int(bought_index) #如果是数字,则进行强制类型转换
		if bought_index >= 0 and bought_index < len(goods_list):  #判断输入的索引是否再商品列表索引的这个区间,如果不是则再次请求输入
			bought_name = goods_name[bought_index]  # 从goods_name里获取用户所选择的商品名称
			bought_price = goods_list[bought_name]  #从goods_list里面获取商品价格
			if user_salary - bought_price >= 0:  #判断用户是否能够承担得起商品费用,如果不能则输出余额不够
				user_salary = user_salary - bought_price  #如果判断可以承担得起费用,就减去用户余额
				# bought_list = buy_something(bought_list, bought_name, bought_price) #函数
				if bought_list.keys():  #监测商品列表是不是为空(相当于判断用户是否第一次购买),如果是第一次购买就执行else里面的新添加商品到购物车
					for x in bought_list.keys():  #假如已经购买过了,就遍历购物车中的商品名字,判断是不是第二次购买
						if bought_name == x:  #如果遍历到已经购买了商品,就把商品购买数量+1,然后加上商品价格
							bought_list[bought_name][0] += 1
							bought_list[bought_name][2] += bought_list[bought_name][2]
							break
						else: #如果没有就继续循环,直到
							continue
					else: #直到循环结束都没有找到 这个商品再购物车出现,那就新添加一个商品到购物车
						bought_list[bought_name] = [1,bought_price,bought_price] #bought list add goods
				else:
					bought_list[bought_name] = [1,bought_price,bought_price] #bought list add goods
				# print(bought_list)
				print("your choice: %s , price: %s , salary: %s" %(bought_name,goods_list[bought_name],user_salary)) #echo goodsnamepricesalary #输出购买结果,输出选择的商品名称、价格、用户余额
			else:
				print("topic:salary is not enough!you need to pay $%s" %(bought_price - user_salary))
	elif goods_list.get(bought_index): #假如用户输入的是商品名,则判断商品名称是否再goods_list中
		bought_price = goods_list.get(bought_index) #从goods_list中获取所选商品金额
		if user_salary - bought_price >= 0: #判断用户是否可以承担商品费用,如果可以就购买
			user_salary = user_salary - bought_price #减去用户余额
			bought_list = buy_something(bought_list, bought_index, bought_price) #通过自建函数执行购买过程
			# print(bought_list)
			print("your choice: %s , price: %s , salary: %s" %(bought_name,goods_list[bought_name],user_salary)) #输出购买结果包含goodsnamepricesalary
		else: #否则输出用户余额不足
			print("topic:salary is not enough!you need to pay $%s" %(bought_price - user_salary))

	elif bought_index == 'q' or bought_index == 'q' or bought_index == 'quit': #判断用户输入的是不是Q或者q或者quit,如果是就执行下列操作,下列什么操作呢?
		need_pay = 0 #定义用户需要支付的金额
		print("--------shop cart list--------")
		print("name/price/count/total-cost")
		for x in bought_list.keys(): #遍历购物车的keys
			need_pay += bought_list[x][2] #累加各商品总价
			print("%s	%s	%s	%s" %(x,bought_list[x][1],bought_list[x][0],bought_list[x][2])) #从bought_list输出该商品所购买的名称、单价、数量、总价
		print("--------shop cart list--------")
		print("you need to pay :%s,you salary:%s" %(need_pay,user_salary)) #输出用户需要支付所少费用,以及用户的余额
		exit() #退出程序
	else: #如果输入的内容不符合所有判断,则继续请求输入
		continue

查地名


#!/bin/python3
# -*- coding:utf-8 -*-
__author__ = ""

menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车战':{
                '携程':{}
            }
        },
        '浦东':{},
    },
    '山东':{},
}


while True:
	for x in menu.keys():
		print("%s" %x)
	input_add = input(">")
	
	if input_add == 'q' or input_add == 'Q':
		exit()

	if menu.get(input_add):
		while True:
			for x in menu[input_add].keys():
				print("%s" %x)
			input_add1 = input(">%s>" %input_add)

			if input_add1 == 'q' or input_add1 == 'Q':
				break

			if menu[input_add].keys():
				while True:
					
					for x in menu[input_add][input_add1].keys():
						print("%s" %x)
					input_add2 = input(">%s>%s>" %(input_add,input_add1))
					
					if input_add2 == 'q' or input_add2 == 'Q':
						break
					else:
						continue						
			else:
				continue
	else:
		continue
原文地址:https://www.cnblogs.com/anyanyaaaa/p/6640320.html