第一次代码

(1) 输出商品列表,用户输入序号,显示用户选中的商品.

页面显示 序号 + 商品名称,如:
1 手机
2 电脑

(2): 用户输入选择的商品序号,然后打印商品名称

(3):如果用户输入的商品序号有误,则提示输入有误,并重新输入。

(4):用户输入Q或者q,退出程序。

flag = True
while flag:
li = ['手机', '电脑', '鼠标垫', '游艇']
for i in li:
print('{}\t{}'.format(li.index(i) + 1, i))
num_of_choose = input('请输入选择的商品序号(按Q退出,不区分大小写):')
if num_of_choose.isdigit():
num_of_choose = int(num_of_choose)
if num_of_choose > 0 and num_of_choose <= len(li):
print(li[num_of_choose - 1])
else:print('请输入有效数字!')
elif num_of_choose.upper() == 'Q':
flag = False
else:
print('请输入整数!')

升级

功能要求:

要求用户输入总资产,例如:2000

显示商品列表,让用户根据序号选择商品,加入购物车购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。

goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}
]
total = 0
flag = True
money = input('请输入您的总资产:')
while flag:
for i in goods:
print('{}\t{}\t{}'.format(goods.index(i) + 1, i['name'], i['price']))
num_of_choose = input('请选择商品的序号(按Q退出,不区分大小写):')
if num_of_choose.isdigit():
num_of_choose = int(num_of_choose)
if num_of_choose > 0 and num_of_choose <= len(goods):
total = total + goods[num_of_choose - 1]['price']
if total < int(money):
print('成功加入购物车!')
print('你当前选择的商品为:{}\t价格为:{}'.format(goods[num_of_choose - 1]['name'],goods[num_of_choose - 1]['price']))
print('总价为:{}'.format(total))
else:
print('账户余额不足!')
flag = False
else:print('请输入有效数字!')
elif num_of_choose.upper() == 'Q':
flag = False
else:print('请输入整数!')

最终

# 把货物放在货架上
li = [
{'name':'苹果', 'price':1},
{'name':'香蕉', 'price':1},
{'name':'西瓜', 'price':10},
{'name':'橘子', 'price':0.5},
]
shopping_car = {} # 建立一个空购物车
print('欢迎光临水果店')
money = input('让我看看你有多少钱:')
if money.isdigit() and int(money) > 0:
while 1:
for i,k in enumerate(li):
print('序号:{}\t商品:{}\t价格:{}'.format(i, k['name'], k['price']))
choose = input('请输入您要购买的商品序号:')
if choose.isdigit() and int(choose) < len(li):
num = input('您要购买的商品数量:')
if num.isdigit():
if int(money) > li[int(choose)]['price'] * int(num):
money = int(money) - li[int(choose)]['price'] * int(num)
if li[int(choose)]['name'] in shopping_car:
shopping_car[li[int(choose)]['name']] += int(num) # 若商品已经在购物车中, 则增加数量
else:
shopping_car[li[int(choose)]['name']] = int(num)
print('购物车中的商品有:{}\t\t您的余额为:{}'.format(shopping_car,money))
else:
print('余额不足')
break
else:
print('您输入的序号有误')

Python练习_购物车_day6的更多相关文章

  1. python练习_购物车(简版)

    python练习_购物车(简版) 需求: 写一个python购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下 ...

  2. python练习_购物车(2)

    用python写了一个购物车程序,主要是练习,代码如下 主入口文件:main.py #!/usr/bin/env python # -*- coding:utf-8 -*- #先调用用户登录函数,在进 ...

  3. python开发_++i,i += 1的区分

    python开发_++i,i += 1的区分 在很多编程语言(C/C++,Java等)中我们都会碰到这样的语法: 1 int i = 0; 2 ++ i; // -- i; 这样的语法在上述编程语言中 ...

  4. python学习_数据处理编程实例(二)

    在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...

  5. Python递归_打印节点信息

    Python递归_打印节点信息 递归特性:1.必须由一个明确的结束条件2.每次进入更深一层递归时,问题规模相比上一次递归都应该有所减少3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时 ...

  6. python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学

    首发于:python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 http://jianma123.com/viewthread.aardio?threadid=431 本文 ...

  7. python练习_三级菜单

    python练习_三级菜单 需求: 做一个地区查询三级菜单,输入一级能够打印下一级 在第三级个第二级输入e可以返回上一级 在任意一级输入q则退出程序 以下代码实现的功能与思路: 功能: (1)通过In ...

  8. (转)Python作业day2购物车

    Python作业day2购物车 原文:https://www.cnblogs.com/spykids/p/5163108.html 流程图: 实现情况: 可自主注册, 登陆系统可购物,充值(暂未实现) ...

  9. python练习_简单登录

    python练习_简单登录 需求: 做一个登录的小程序,验证用户与密码 要求登录三次错误后锁定 以下代码实现的功能与思路: 功能: 1.除admin以外的用户累计登录失败次数超过三次则锁定,此时需要管 ...

随机推荐

  1. android中SpannableString之富文本显示效果

    SpannableString其实和String一样,都是一种字符串类型,SpannableString可以直接作为TextView的显示文本,不同的是SpannableString可以通过使用其方法 ...

  2. 011-多线程-基础-基于AbstractQueuedSynchronizer自定义同步组件

    一.概述 队列同步器AbstractQueuedSynchronizer,是用来构建锁或者其他同步组件的基础框架. 1.1.自定义独占锁同步组件 设计一个同步工具:该工具在同一时刻,只允许一个线程访问 ...

  3. NULL和nullptr

    NULL就是0 nullptr是空指针[c++11]

  4. Qt编写自定义控件38-高亮按钮

    一.前言 高亮按钮控件,既可以作为类似于交通指示灯使用,也可以作为设备状态指示灯使用,控件内置多套颜色风格,还可以自己设置颜色风格,按钮可以增加文字显示,非常适合需要在状态设备上显示小量的文字展示,按 ...

  5. 【424】C语言二级指针

    参考:C 指向指针的指针 指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.通常,一个指针包含一个变量的地址.当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向 ...

  6. 01.轮播图之一 :scrollView 轮播

    接触的每个项目,都会用到轮播图的部分,轮播图都写了好多次,用过各种各样的方式写: 这篇总结的博客,我将分为几个篇幅写,希望写完这几篇博客之后,我能总结出自己写这个轮播的优缺和不同之处 scrollvi ...

  7. 关于一些初学Unity的基本操作和自己的理解

    1.Scene面板操作:  A.按住鼠标右键,拖动鼠标,可以旋转  B.鼠标滚轮前后滑动,前进后退  C.按下鼠标滚轮,拖动鼠标,可以拖动场景  D.在场景中选中物体,按F键或者在Hierarchy面 ...

  8. 常见问题:计算机网络/运输层/TCP

    TCP 面向连接,全双工,点对点. TCP头格式 TCP包没有IP地址,IP地址在网络层的IP协议中,TCP包包括源端口号,目标端口号 一个TCP连接需要四个元祖表明是同一连接(src_ip,src_ ...

  9. Java 23中设计模式

    创建型模式(5): --单例模式.工厂模式.抽象工厂模式.建造者模式.原型模式. 结构型模式(7): --适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式. 行为模式(11): ...

  10. 20175316盛茂淞 2018-2019-2 《Java程序设计》第10周学习总结

    教材知识总结 第12章 Java多线程机制 进程与线程 进程是程序的一次动态执行进程,它对应了从代码加载.执行至执行完毕的一个完整过程 线程不是进程,一个进程在其执行过程中,会产生多个线程,线程间可以 ...