python程序整理(1)
'''
用户登录验证
要求:
1. 系统⾃动⽣成4位随机数. 作为登录验证码. 直接用就好. 这里不用纠结
提示. 生成随机数的办法.
from random import randint
num = 0
verify_code = ""
while num < 4:
verify_code += chr(randint(65, 90))
num += 1
print(verify_code) # 四位随机验证码
2. 用户输入⽤用户名和密码还有验证码.
3. 用户可以有三次登录的机会. 但是验证码如果输入错误. 不计算在内
'''
from random import randint
#正确的用户名和密码
username = "alex"
password = "123"
count = 3
while count > 0:
#用户输入用户名和密码
uname = input("请输入用户名:")
pwd = input("请输入密码:")
#生成验证码,每次生成的都是随机的(此处是题上提供的代码)
num=0
verify_code""
while num < 4:
verify_code += chr(randint(65, 90))
num += 1
# 用户输入验证码
yzm = input("请输入验证码(%s)" % verify_code)
#判断验证码是否正确
if yzm.upper()!=verify_code:
print("验证码错误!") #验证码错误,重新输入,并没有改变循环的次数限制,这样验证码错误就不会计算一次登录错误
else:
if uname == username and pwd == password:
print("登陆成功!")
break #退出程序
else:
print("对不起,用户名或密码错误")
count -= 1 #用户登录失败,次数减一
print("还有%s次机会" % count)
'''
数据结构:
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
......
] 功能要求:
基础要求: 1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表 2、允许用户根据商品编号购买商品 3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4、可随时退出,退出时,打印已购买商品和余额 5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示 扩展需求: 1、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买 2、允许查询之前的消费记录
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998}
]
#用户名密码
username = "alex"
password = "123"
f = open("shopping_cart.txt",mode="r",encoding="utf-8")
#从文件中读取到上次的余额,创建了一个文件"shopping_cart.txt"
money = int(f.readline().strip().split(":")[1])
#账户内的钱
# 购物车
# [{'id': 0, 'name':'电脑', 'price': 1999, 'totle': 10}]
# [{'id': 编号, 'name':'商品', 'price': 价格, 'totle': 数量}]
# 从文件中读取到购物车内的数据
shoppingcart = eval(f.readline().strip())
f.close()
# 登录.
while 1:
uname = input("请输入你的用户名, 输入Q退出系统:")
if uname.upper() == 'Q':
print("系统退出")
break
pwd = input("请输入你的密码:")
if uname == username and pwd == password:
print("恭喜你. 登录成功")
_money = int(input("您当前的余额是:%s, 输入任意数字进行充值, 输入0不充值: " % money))
money += _money
while 1:
# 商品列表
for i in range(len(goods)):
print("%s, 商品: %s, 价格: %s" % (i+1, goods[i]['name'], goods[i]['price']))
# 用户输入要购买的商品编号
num = int(input("请输入您想要购买的商品编号:"))
# 获取到用户购买的商品
good = goods[num - 1]
# 校验是否可以购买
if money < good['price']: # 商品价格
print("对不起, 余额不足! 您当前的余额是%s 请购买其他商品!" % money)
continue # 重新显示商品列表
else:
for g in shoppingcart:
if g['id'] == num - 1: # 查看购物车中是否已经拥有已经够买了的商品
g['totle'] += 1 # 已经有了. 数量加1就可以了
break # 结束购物车的添加
else: # 购物车里没有该商品.
# 将第一次购买的商品添加到购物车
shoppingcart.append({'id': num-1, 'name': good['name'], 'price': good['price'], 'totle': 1})
money = money - good['price'] # 扣款
# 提示用户购买成功
print("购买%s商品成功, 花费%s元, 您的余额是: %s" % (good['name'], good['price'], money))
# 判断是否继续购物
isContinue = input("请问是否继续购物. 输入任意内容继续, 输入N结束购物(N)")
if isContinue.upper() == 'N':
print("结束购物")
# 购物流程结束. 打印购物已经购买的商品和余额. 此处可以写在"结束购物"位置
print("您的余额是%s" % money)
print("商品编号\t商品名称\t商品单价\t购买数量\t花费金额")
for good in shoppingcart:
print("%s\t%s\t%s\t%s\t%s" % (
good['id'], good['name'], good['price'], good['totle'], (good['price'] * good['totle'])))
# 将购物车中的内容和余额写入到文件中
f = open("shopping_cart.txt", mode="w", encoding="utf-8")
f.write("money:%s\n" % money)
f.write(str(shoppingcart))
f.flush()
f.close()
print("程序退出. 欢迎下次光临!")
exit() # 结束购物
else:
print("对不起, 登录失败")
python程序整理(1)的更多相关文章
- python程序整理(2)
# 写一个函数完成三次登陆功能: # 用户的用户名密码从一个文件register中取出. # register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行. # 完 ...
- python基础整理----基本概念和知识
整理一下python的基本概念和知识, 主要用python3为语法标准. python介绍 一种面向对象的解释性计算机设计语言,具有丰富和强大的库. python定位:"优雅".& ...
- 给大家一些改善 Python 程序的 91 个建议
读了一本还不错的书「编写高质量代码改善 Python 程序的 91 个建议」,大多数的建议是真心不错,我虽然写python也有3年多了,但是有些地方确实没去注意过,特地整理了一下,给大家参考. 我已经 ...
- 谈谈 Python 程序的运行原理
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,谈谈 Python 程序的运行原理 这篇文章准确说是『Python 源码剖析』的 ...
- 这几天加班熬夜把所有Python库整理了一遍,非常全面!
库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码.colorama 主要用来给文本添加各种颜色,并且非常简单易用.Prettytable 主要用于在终端或浏览器端构建格 ...
- 利用setuptools发布Python程序到PyPI,为Python添砖加瓦
pip install的东西从哪里来的? 从PyPI (Python Package Index)来的,官网是: https://pypi.python.org/pypi/执行pip install ...
- Python库整理
库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...
- 成为python程序员,对疫情过后的毕业生来说,真是一个不错的方向吗?
Python最近几年,一直被炒得很火,这其中有商业因素,但更重要的是即将到来的人工智能时代,而python就恰好是最适合的编程语言. 所以无论是在职的人,还是在校的学生,都想着跟上这一趋势,但,在今年 ...
- Python 库整理【收藏】
库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...
随机推荐
- flutter vscode 安卓打包apk文件
配置 VSCode默认是没有使用密钥签名的,往往我们在正式项目中是需要签名的.那就创建好了...所以需要自己创建并使用密钥签名 步骤一 创建密钥库 执行以下命令: keytool -genkey -v ...
- JZOJ1496 页
Description 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他想让天马在广阔的天空上,举行一场精彩的天马队列变换表演.首先,战神安排n头高度不同 ...
- golang开发:CSP-WaitGroup Mutex
CSP 是 Communicating Sequential Process 的简称,中文可以叫做通信顺序进程,是一种并发编程模型,最初于Tony Hoare的1977年的论文中被描述,影响了许多编程 ...
- Unit1:Android
unit1 1.安卓版本 最新数据访问维基百科 2008年,android1.0 2011年,android3.0,平板失败 同年10月,android4.0,无差别使用 2014年,android5 ...
- Java面试知识点1
typora-root-url: ......\Software\Typora\Picture Bean的作用域 在Spring的元素的scope属性设置bean的作用域,用来决定bean是单实例还是 ...
- 217。数据中是否有重复元素(哈希表/set简法)
给定一个整数数组,判断是否存在重复元素. 如果任意一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false . 示例 1: 输入: [1,2,3,1] 输出: t ...
- python蟒蛇绘制
使用IDLE的文件方式编写代码并保存为PythonDraw.py文件 python蟒蛇绘制 import turtle引入了海龟绘图体系 使用setup函数,设定了一个宽650像素和高350像素的窗体 ...
- ribbon源码(6) Server
Server 代表一个服务器信息. 内部有服务器地址(host).服务器端口(port).服务器dc(zone).是否存活标志(isAliveFlag).请求协议(scheme).是否可以提供服务(r ...
- 使用vue-cli(vue脚手架)快速搭建项目
vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目.这篇文章将会从实操的角度,介绍整个搭建的过程. 1. 避坑前言 其实这次使用vue-cli的 ...
- 在思科三层交换机上配置DHCP,不同网段/VLAN间互通
摘要: 描述:在三层交换机上配置DHCP,实现DHCP为PC1/PC3分配192.168.1.X网段:实现DHCP为PC2/PC4分配192.168.2.X网段:并且各个PC间要可以互相通信.(文末附 ...