虽然很low,但是代是自己写的
今天学习了以下几个方面的内容,虽然部分内容不能理解,跟着老师写出了代码。
请闭眼写出以下程序。
程序:购物车程序
需求:
1、先做一个商品列表product_list将商品存下来
2、新建一个空列表,作为购物列表shouping_list
3、新建一个工资列表,让用户输入工资,为了避免用户输入的不是数字,用int强转时报错做两件事情
3.1 判断用户输入的是不是数字
3.2 将用户输入的值强转成数字,因为列表的下标时数字,有序用于判断。
创建一个死循环做一下事情:
1、将商品列表遍历后显示给用户,要求有序号,我们可以把下标作为序号
2、让用户输入一个数字,选择购买的商品
2.1判断用户输入的是不是数字,如果时数字,就把它强转成数字类型,存到变量user_choice中。
2.2可以留下来后面再做:进一步判断用户输入的数目是否超过商品数目,如果超了就提示,不超就继续
3、判断用户是否买得起该商品
3.1根据用户输入的数字,把商品从列表里取下来
3.2判断是否可以买得起
3.3如果买得起就将列表添加到购物列表shouping_list取
3.4扣钱
如果买不起:
提示XX商品买不起,你的钱不够xxx
2.3可以留下来后面再做:用户输入的值超过了商品数量,就提示:没有这个商品
4、判断用户是否输入q
4.1 如果用户输入的Q
4.2 显示购物列表
4.3 显示余额
4.4 退出程序
4.5 如果用户输入的时其他字符,显示错误
# -*- coding:utf-8 -*- # Author:Dwdar product_list = [ # 商品用列表存下来 ('Iphoe', 5800), ('Mac Pro', 9800), ('Bike', 9800), ('Watch', 10600), ('Coffe', 31), ('Alex Python', 120), ] shouping_list = [] # 一个空列表,他是购物车,用户购买的商品要放到这里 salary = input("请输入工资:") # 用户输入工资 if salary.isdigit(): # 判断用户输入的是不是数字 salary = int(salary) # 如果是数字,就int 强转成数字 while True: # 进入死循环 for index, item in enumerate(product_list): # 遍历商品列表, # print(product_list.index(item),item) #效率低 print(index, item) user_choice = input("选择商品>>>:") # 让用户选择商品 if user_choice.isdigit(): # 如果用户输入的是数字 user_choice = int(user_choice) # 如果是数字,就int 强转成数字 # 判断 用户输入的数字是否超过商品的学号,数量 if user_choice < len(product_list) and user_choice >= 0: p_item = product_list[user_choice] # 通过下标把商品价格取出来 if p_item[1] <= salary: # 判断是否买得起 shouping_list.append(p_item) # 买得起就把商品存进,购物车里 salary -= p_item[1] # 扣钱 # 向用户提示购买了什么,余额是多少 print("商品 %s 已添加到购物车,你的余额是: \033[31;1m%s\033[0m" % (p_item, salary)) else: # 如果判断时发现买不起 print("\033[41;1m你的余额只剩[%s]啦,还买个毛线\033[0m" % salary) # 给用户反馈买不起 else: # 还有一种情况是,用户选择后没有这个商品,向用户提示 print("\033[41;1m你的选择的商品%s不存在!\033[0m" % user_choice) elif user_choice == 'q': # 如果用户输入q,进入退出环节 print("----------------商品列表----------------") # 列表标题,为了好看一点 for p in shouping_list: # 遍历已购买商品列表 print(p) # 打印商品列表 print("\033[31;1m您的余额是:%s\033[0m" % salary) # 向用户提示余额情况 exit() # 退出程序 else: print("选择错误") # 如果用户没有录入q,而录入了别的,我们向用户提示
思路:
进入程序显示一级菜单:
向用户提示输入:
根据用户的输入进入二级菜单:
向用户提示输入:
根据选择进入三级菜单:
向用户提示输入:
根据用户输入显示三级菜下的内容
如果用户输入b 返回上一级菜单
如果用户输入q,退出程序
--------------------------------------------------------------------
为了实现向下选择和向上返回的目的,首先需要建立一个无限循环
把一级目录显示给用户
向用户提选择一级目录中的任意一个。
如果用户输入了某个一级目录,遍历和显示相关目录
一次类推,不断循环,通过嵌套循环和判断实现四级菜单和逐级打开效果。
代码
# -*- coding:utf-8 -*- # Author:Dwdar menu = { #嵌套字典数据 "小学":{ "一年级":{ "一年级1班":{ "一1班学生1", "一1班学生2", "一1班学生3", }, "一年级2班":{ "二1班学生1", "二2班学生2", "二3班学生3", }, "一年级3班":{ "一3班学生1", "一3班学生2", "一3班学生3", }, }, "二年级":{ "二年级1班":{ "二1班学生1", "二1班学生2", "二1班学生3", }, "二年级2班":{ "二2班学生1", "二2班学生2", "二2班学生3", }, "二年级3班":{ "二3班学生1", "二3班学生2", "二3班学生3", }, }, "三年级":{ "三年级1班":{ "三1班学生1", "三1班学生2", "三1班学生3", }, "三年级2班":{ "三2班学生1", "三2班学生2", "三2班学生3", }, "三年级3班":{ "三3班学生1", "三3班学生2", "三3班学生3", }, "三年级4班":{ "三4班学生1", "三4班学生2", "三4班学生3", }, "三年级5班":{ "三5班学生1-那尔太", "三5班学生2", "三5班学生3", } }, "四年级":{ "四年级1班":{ "四1班学生1", "四1班学生2", "四1班学生3", }, "四年级2班":{ "四2班学生1", "四2班学生2", "四2班学生3", }, "四年级3班":{ "四3班学生1", "四3班学生2", "四3班学生3", }, "四年级4班":{ "四4班学生1", "四4班学生2", "四4班学生3", }, "四年级5班":{ "四5班学生1-那尔太", "四5班学生2", "四5班学生3", } }, "五年级":{ "五年级1班":{ "五1班学生1", "五1班学生2", "五1班学生3", }, "五年级2班":{ "五2班学生1", "五2班学生2", "五2班学生3", }, "五年级3班":{ "五3班学生1", "五3班学生2", "五3班学生3", }, "五年级4班":{ "五4班学生1", "五4班学生2", "五4班学生3", }, "五年级5班":{ "五5班学生1-那尔太", "五5班学生2", "五5班学生3", } }, "六年级":{ "六年级1班":{ "六1班学生1", "六1班学生2", "六1班学生3", }, "六年级2班":{ "六2班学生1", "六2班学生2", "六2班学生3", }, "六年级3班":{ "六3班学生1", "六3班学生2", "六3班学生3", }, "六年级4班":{ "六4班学生1", "六4班学生2", "六4班学生3", }, "六年级5班":{ "六5班学生1-那尔太", "六5班学生2", "六5班学生3", }, }, }, "初中":{ "初一": { "初一1班": { "初一1班学生1", "初一1班学生2", "初一1班学生3", }, "初一2班": { "初一1班学生1", "初一2班学生2", "初一3班学生3", }, "初一3班": { "初一3班学生1", "初一3班学生2", "初一3班学生3", }, }, "初二": { "初二1班": { "初二1班学生1", "初二1班学生2", "初二1班学生3", }, "初二2班": { "初二1班学生1", "初二2班学生2", "初二3班学生3", }, "初二3班": { "初二3班学生1", "初二3班学生2", "初二3班学生3", }, }, "初三": { "初三1班": { "初三1班学生1", "初三1班学生2", "初三1班学生3", }, "初三2班": { "初三1班学生1", "初三2班学生2", "初三3班学生3", }, "初三3班": { "初三3班学生1", "初三3班学生2", "初三3班学生3", }, }, }, "高中":{ "高一": { "高一1班": { "高一1班学生1", "高一1班学生2", "高一1班学生3", }, "高一2班": { "高一2班学生1", "高一2班学生2", "高一2班学生3", }, "高一3班": { "高一3班学生1", "高一3班学生2", "高一3班学生3", }, }, "高二": { "高二1班": { "高二1班学生1", "高二1班学生2", "高二1班学生3", }, "高二2班": { "高二2班学生1", "高二2班学生2", "高二2班学生3", }, "高二3班": { "高二3班学生1", "高二3班学生2", "高二3班学生3", }, }, "高三": { "高三1班": { "高三1班学生1", "高三1班学生2", "高三1班学生3", }, "高三2班": { "高三2班学生1", "高三2班学生2", "高三2班学生3", }, "高三3班": { "高三3班学生1", "高三3班学生2", "高三3班学生3", }, }, }, "大学":{ "大一": { "大一python班": { "大一python班学生1", "大一python班学生2", "大一python班学生3", }, "大一C语言班": { "大一C语言班学生1", "大一C语言班学生2", "大一C语言班学生3", }, "大一网络工程班": { "大一网络工程班学生1", "大一网络工程班学生2", "大一网络工程班学生3", }, }, "大二": { "大二python班": { "大二python班学生1", "大二python班学生2", "大二python班学生3", }, "大二C语言班": { "大二python班学生1", "大二C语言班学生2", "大二网络工程班学生3", }, "大二网络工程班": { "大二网络工程班学生1", "大二网络工程班学生2", "大二网络工程班学生3", }, }, "大三": { "大三python班": { "大三python班学生1", "大三python班学生2", "大三python班学生3", }, "大三C语言班": { "大三python班学生1", "大三C语言班学生2", "大三网络工程班学生3", }, "大三网络工程班": { "大三网络工程班学生1", "大三网络工程班学生2", "大三网络工程班学生3", }, }, }, } while True: #第一层无限循环 for i in menu: # 遍历字典一级目录 print(i) #一级目录显示给用户 chois = input("请输入选择:>>>") #让用户选择二级目录 if chois == 'b': #如果用户输入b,退出当前循环 break while True: #第二层无限循环 for i2 in menu[chois]: #如果用户输入的二级目录存在,那么遍历二级目录 print('\t',i2) #将遍历后的二级目录显示给用户,'\t'是添加一个Tab键位置 chois2 = input("请输入选择:>>>") #让用户选择三级目录 if chois2 == 'b': #如果用户输入b,退出当前循环 break while True: for i3 in menu[chois][chois2]:#如果用户输入的三级目录存在,那么遍历三级目录 print('\t\t',i3) #将遍历后的三级目录显示给用户 chois3 = input("请输入选择:>>>") #让用户选择四级目录 if chois3 == 'b': break while True: for i4 in menu[chois][chois2][chois3]: #将遍历后的四级目录显示给用户 print('\t\t\t', i4) chois4 = input("按b返回上一层:>>>") #目录到了最底层,向用户提示返回 if chois4 == 'b': #如果用户输入了b break #退出当前循环 #练习程序没有对无效输入进行判断,无效输入会报错
本想做三级菜单,为把儿子名字显示出来,一激动就做了四级菜单,呵呵,实现方法一样的。
优质内容筛选与推荐>>