python编程基础之简单购物车
#good文件夹内容
[
['Iphone7', 5800],
['Coffee', 30],
['疙瘩汤', 10],
['Python Book', 99],
['Bike', 199],
['ViVo X9', 2499],
]
user = {'username': None}
shopping_car_dict = dict()
money = [0]
def get_goods():
with open('goods.txt','r',encoding='utf8') as fr:
goods_list = fr.read()
goods_list = eval(goods_list)
return goods_list
goods_list = get_goods()
def register():
print('请注册')
if not user['username']:
username = input('username:')
pwd = input('pwd:')
with open('user_info.txt','a',encoding='utf8') as fa:
fa.write(f'{username}:{pwd} |')
else:
print('已登录,无法再注册')
def login():
print('欢迎登录')
if not user['username']:
username = input('username:')
pwd = input('pwd:')
inp_user_info = f'{username}:{pwd}'
with open('user_info.txt','r',encoding='utf8') as fr:
user_info = fr.read()
user_info_split = user_info.split('|')
if inp_user_info in user_info_split:
print('登陆成功')
user['username'] = username
else:
print('账号或密码输入错误')
else:
print('您已登陆')
def shopping():
print('欢迎来到购物商场')
while True:
for ind, goods in enumerate(goods_list):
print(f'商品编号:{ind}',goods)
goods_choice = input('请输入您需要的商品,(输入q退出):')
if goods_choice == 'q':
break
goods_choice = int(goods_choice)
goods = goods_list[goods_choice]
print(f'购物成功:{goods}\n')
goods_name = goods[0]
if goods_name in shopping_car_dict:
shopping_car_dict[goods_name] += 1
else:
shopping_car_dict[goods_name] = 1
money[0] += goods[1]
print(f'购物车商品:{shopping_car_dict}, 总价:{money[0]}')
def shopping_car():
print('购物车')
while True:
print(f'购物车商品:{shopping_car_dict}, 总价:{money[0]}')
goods_choice = input('请输入不需要的商品,若没有请按q退出')
if goods_choice == 'q':
break
shopping_car_dict[goods_choice] -= 1
for goods in goods_list:
if goods_choice in goods:
money[0] -= goods[1]
def pay():
print('请支付')
print(f'购物车商品:{shopping_car_dict}, 总价:{money[0]}')
choice = input('是否支付(Y/y),若不支付(N/n),不支付会清空购物车:')
if choice == 'Y' or choice == 'y':
print(f'支付{money[0]}成功,已购买{shopping_car_dict}')
elif choice == 'N' or choice == 'n':
shopping_car_dict.clear()
money[0] = 0
print('未支付,清空购物车成功')
else:
print('输入不合法')
func_msg = '''
1:注册
2:登录
3:购物
4:购物车
5:结账
q:结束
'''
func_dict = {
'1': register,
'2': login,
'3': shopping,
'4': shopping_car,
'5': pay,
}
while True:
print(func_msg)
func_choice = input('请选择您需要的功能')
if func_choice == 'q':
break
func_dict[func_choice]()
python编程基础之简单购物车的更多相关文章
- python 编程基础练习 第一天
python 编程基础练习 第一天: 需求: 1.计算2的38次方,180*0.7输出(精度显示正常), x的y次方,数字倒序输出即345876输出678543,方法越多越好. 2.字符串处理: 1) ...
- 第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出
第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...
- Android 网络编程基础之简单聊天程序
前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: package com.jiao.socketdemo; import java.io.Buffered ...
- Python编程基础[条件语句if 循环语句 for,while](二)
ython条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: if 判断条件: 执行语句……else: 执行语句…… x= ...
- Python编程基础(一)
1.Python中的变量赋值不需要类型声明 2.等号(=)用来给变量赋值 3.字符串拼接用 “+” 号 temp=‘123’ print('temp的值是%s'%temp) #整数和字符创的转换, ...
- python学习笔记--python编程基础
一.一个隆重的仪式 我们在学习语言的时候,第一个写的程序肯定都是hello world.来写第一个程序吧,其实很简单,python的语法就是简单.优雅,一个print就搞定. 1 print('hel ...
- (Python基础)简单购物车代码
以下是最简单,最基础的购物车代码,一起学习,一起参考.product_list = [ ('Iphone',5800), ('Mac Pro',15800), ('car',580000), ('co ...
- python 基础之简单购物车小程序实现
购物车 all_list = [ ('mac',9000), ('kindle',900), ('tesla',800), ('python',105), ('bile',2000), ] savin ...
- 1.Python编程基础
1. 其实,程序指的就是一系列指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令. 虽然借助 Siri(Apple).Google Now(Android) ...
随机推荐
- QT开发安卓APP的中文字体问题
1.安卓默认的字体为DroidSansFallback:谷歌中文字体 由于手机和PC字体的不一致,导致PC上开发的APP到目的安卓设备中文显示为小方框. 故需要要在qt的main函数中设置系统字体: ...
- 官方文档翻译-Today
原文链接: Today 最后更新:2017-02-18 译文: 应用的今日视图扩展被称作小部件.小部件为用户提供快速访问重要信息的入口.例如,用户打开今日视图实时查看股票价格或天气情况,查看今天的日程 ...
- jquery attr()方法获取input的checked属性问题
问题:经常使用jQuery插件的attr方法获取checked属性值,获取的值的大小为未定义,此时可以用prop方法获取其真实值,下面介绍这两种方法的区别: 1.通过prop方法获取checked属性 ...
- 手把手教你搞定个推iOS推送SDK集成
以下是一位开发者在集成个推iOS推送SDK过程中的真实经历. 作者:Ezreallp 一次偶然的机会,公司的项目要用到推送,我自己本来就很懒,不愿意去弄整套APNS的流程,刚好之前跟朋友聊起过他们的产 ...
- 重新理解了重定向,利用重定向可以防止用户重复提交表单(兼谈springmvc重定向操作)
自己用springmvc框架有一段时间了,但是都还一直分不清楚什么时候应该用转发,什么时候应该用重定向.可能用转发的情形太多了,以致于自己都忘记了还有重定向. 当用户提交post请求之后,刷新页面就会 ...
- Otto
导入依赖:implementation 'com.squareup:otto:1.3.8'1定义一个类继承Bus,并且设置单列模式注册和声明订阅者发送事件,最后解除注册与EventBus相同Event ...
- Visual Studio2015 community 许可证到期问题
申请微软账户直接登录可以继续使用.
- Java heap size
今天在性能诊断工作中遇到 Java heap size, 下面是它的相关的概念. 什么是Java heap size ? Java heap size 堆栈大小, 指Java 虚拟机的内存大小.我的理 ...
- Retrotranslator使用简介(JDK1.5->1.4)
Retrotranslator是一个可以把JDK1.5(6)下编译的类(或包)转译成JDK1.4下可以识别的类(包)的工具. 为现在还用JDK1.4呢?我想无非是现在的大部分Java Web应用是 ...
- LinkedBlockingQueue 源码分析
LinkedBlockingQueue LinkedBlockingQueue 是基于链表实现的,可以选择有界或无界的阻塞队列. 队列的元素按照 FIFO 的顺序访问,新增元素添加到队列尾部,移除元素 ...