初学pyhon的几个练习小程序
一、概述
此程序示例为博主根据路飞学城的python的作业而写的(博主也是python初学者,仅花了99元报了路飞学城的python入门14天集中营3期网络课堂班),此程序非常适合python初学者拿来联系,下面粘贴3个示例供大家参考学习
二、程序示例
一、简易登陆程序
1、需求说明
程序启动,用户输入用户名和密码,如果输入正确,正登陆成功
输入的用户名不存在,则提示用户注册
允许用户输入密码3次错误,当超过3次后,则锁定改用户。
下次重新运行程序,如果用户被锁定,则不允许登陆
2、相关代码
# 用户信息格式
# users = {'zhangsan':['张三','123','24',1],'lisi':['李四','456','24',1],'wangwu':['王五','789','24',0]}
import pickle
# 注册用户
def regist():
username = input('请填写登陆账号>>')
pwd = input('请填写登陆密码>>')
nickname = input('请填写昵称>>')
age = input('请填写年龄>>')
users[username] = [nickname,pwd,age,1]
f = open('user.pkl','wb')
pickle.dump(users,f)
f.close()
print('注册成功') # 锁定用户
def lockUser(users,username):
users[username][3] = 0
f = open('user.pkl','wb')
pickle.dump(users,f)
f.close() # 解锁用户(暂时未用到)
def unLockUser(username):
fr = open('user.pkl','rb')
users = pickle.load(fr)
users[username][3] = 1
fw = open('user.pkl','wb')
pickle.dump(users,fw)
fw.close() # ----------begin---------------------
try:
fi = open('user.pkl','rb')
except FileNotFoundError:
f = open('user.pkl','wb')
pickle.dump({},f)
f.close() count = 1
flag = True
while(True):
if(flag):
name = input('请输入您的用户名:')
falg = False
password = input('请输入您的密码:')
f = open('user.pkl','rb')
users = pickle.load(f)
if(users.get(name) == None ):
print('该用户还未被注册,是否现在注册?y/n')
if(input() == 'y'):
# 注册用户
regist()
result = input('是否立即登陆?y立即登陆;n退出')
if(result == 'n'):
break
else:
flag = True
else:
break
elif(users.get(name)[3] == 0):
print('该账号已经被锁定,请联系管理员进行解锁!')
break
elif(users.get(name)[1] != password):
if(count == 3):
# 锁定用户
lockUser(users,name)
print('密码三次输入错误,已经锁定该账号,请联系管理员进行解锁')
break
else:
print('密码不正确','还有',str(3-count),'次输入的机会!')
count += 1
flag = False
else:
print('登陆成功!')
break
# --------------end------------------------
二、简易购物车程序
1、需求说明
启动程序后让用户输入工资,然后打印商品列表
允许用户根据商品编号来添加商品
用户添加商品后,检测余额是否充足,如果不充足则提示,充足直接扣款
用户可以一直购买商品,也可以随时退出,退出时打印购买的商品和余额
2、相关代码
goods = {'':['优衣库裤子',499],'':['小米手机',2499],'':['iPhone7',4199],'':['联想电脑',4999],'':['智力车厘子',36],'':['python从入门到放弃',79]}
buyCart = []
try:
money = int(input('请输入您的金额:'))
except ValueError:
print('请输入正确的金额格式')
exit()
print('-----------商品列表---------------')
print('商品编号 名称 价格')
for item in goods:
s = '%s \t%s \t%d' % (item,goods.get(item)[0],goods.get(item)[1])
print(s)
while(True):
goodsNO = input('\n请选择要添加的商品编号:')
if(goodsNO not in goods):
print('\n选择的商品编号不存在,请重新选择!')
continue
if(goods.get(goodsNO)[1] > money):
print('\n金额不足,无法添加该商品!')
else:
buyCart.append(goodsNO)
s = '%s \t%s \t%d' % (it
money = money - goods.get(goodsNO)[1]
print('\n当前余额为%d' % money)
yn = input('\n是否继续添加商品?退出输入n,继续按其他任意键:'
if(yn) == 'n'):
print('\n\n-------已购买的商品----------')
print('商品编号 名称 价格')
for item in buyCart:em,goods.get(item)[0],goods.get(item)[1])
print(s)
print('\n余额为:' + str(money))
break
三、简易多级菜单程序
1、需求说明
多级菜单的查看
要求程序启动后,用户可以一次选择进入各子菜单
可以在任意一级返回上一级
可以在任意一级菜单退出程序
输入‘dir’来查看当前菜单下的子菜单,输入‘cd ..’返回上一级目录,输入‘cd /’返回一级菜单,输入‘path’查看当前菜单路径,输入‘quit’来退出程序
2、相关代码
menu = {
'北京':{
'海淀':{'五道口':{'soho':{},'google':{}},'中关村':{'爱奇艺':{},'汽车之家':{}},'上地':{'百度':{},'联想':{}}},
'昌平':{'回龙观':{'新浪':{},'网易':{}},'东小口':{'中科软':{},'中软':{}},'朱辛庄':{'智联':{},'拉钩':{}}},
'朝阳':{'三里屯':{'太极华青':{},'北京云财':{}},'国贸':{'北京华志信':{},'北京伟业前程':{}},'望京':{'北京佰加星':{},'北京智达方通':{}}}
},
'上海':{
'浦东':{'金桥':{'上海求步':{},'上海驰亚':{}},'合庆':{'中国电信':{},'上海顶通':{}}},
'虹口':{'江湾':{'上海伦伟':{},'上海津腾':{}},'提篮桥':{'上海芒橙':{},'上海直达':{}}}
},
'广州':{
'黄埔':{'板桥':{'恒大地产':{},'广州市蒲公英':{}},'官洲':{'广州动点网络':{},'广州玖维':{}}},
'海珠':{'客村':{'广州海度':{},'广州艾秀':{}},'新港':{'广州优识':{},'广州合光':{}}}
}
}
print('您可以输入‘dir’来查看当前菜单下的子菜单,输入‘cd ..’返回上一级目录,输入‘cd /’返回一级菜单,输入‘path’查看当前菜单路径,输入‘quit’来退出程序\n')
level = 0 #当前数据项的级别,比如北京为1级
menus = [menu] #存储当前从0-5级的各级的字典‘
path = [] #存放当前菜单路径
while(True):
value = input('>>')
if(value == 'dir'):
print(list(menus[level]))
elif(value == 'cd ..'): #返回上级
if(level > 0):
level -= 1
menus.pop()
path.pop()
elif(value == 'cd /'): #返回根路径
menus = [menu]
level = 0
path = []
elif(value == 'quit'): #退出
break
elif(value == 'path'): #查看当前菜单路径
paths = ''
for item in path:
paths = paths + '-' + item
print(paths[1:])
elif(value.startswith('cd ')): #进入输入的下一级菜单
value = value[3:]
if(value not in menus[level]):
print('找不到当前项下的子菜单',value)
else:
level += 1
menus.append(menus[level-1][value])
path.append(value)
else:
print('不是查看菜单的命令')
初学pyhon的几个练习小程序的更多相关文章
- 小程序——微信小程序初学踩过的坑
微信小程序初学踩过的坑 一.前言 最近因为某些需要和个人兴趣打算开发一下微信小程序,经过在官方网站上的基本了解,我大体知道了微信小程序开发的大致过程,其实最本质的就是MVVM,借用了很多模式上 ...
- 初学微信小程序
最近微信推出了微信小程序,为此我学了几天,基本了解了组件及简单语法,但是今天我自己想要独立写一个demo时,忽然发现难道我的不是微信小程序的语法(我以前是iOS 开发,不用css),而是css样式的设 ...
- 初学微信小程序 TodoList
微信小程序的学习 微信小程序的开始尝试 TodoList 微信开发者工具生成 目录如下: . |-- app.js |-- app.json |-- app.wxss |-- pages | |-- ...
- 初学微信小程序——配置问题(1)
一.注册: 微信小程序账号注册:登录https://mp.weixin.qq.com 点击“立即注册”->”小程序” 注册完成后,下载微信小程序开发者工具: 依次点击:“首页”->“文档 ...
- 【python】——小程序之电话薄
初学python,写一个小程序练习一下.主要功能就是增删改查的一些功能.主要用到的技术:字典的使用,pickle的使用,io文件操作.代码如下: import pickle #studentinfo ...
- 《微信小程序七日谈》- 第四天:页面路径最多五层?导航可以这么玩
<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 微信小 ...
- 《微信小程序七日谈》- 第二天:你可能要抛弃原来的响应式开发思维
<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 上篇文 ...
- 《微信小程序七日谈》- 第一天:人生若只如初见
<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 微信小 ...
- 《微信小程序七日谈》- 第五天:你可能要在登录功能上花费大力气
<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩: 第五 ...
随机推荐
- django 的时区设置
在Django的配置文件settings.py中,有两个配置参数是跟时间与时区有关的,分别是TIME_ZONE和USE_TZ 如果USE_TZ设置为True时,Django会使用系统默认设置的时区,即 ...
- 如何优雅地在 Spring Boot 中使用自定义注解,AOP 切面统一打印出入参日志 | 修订版
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 资深架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- Python爬虫入门教程 53-100 Python3爬虫获取三亚天气做旅游参照
爬取背景 这套课程虽然叫爬虫入门类课程,但是里面涉及到的点是非常多,十分检验你的基础掌握的牢固程度,代码中的很多地方都是可以细细品味的. 为什么要写这么一个小东东呢,因为我生活在大河北,那雾霾醇厚的很 ...
- [数据库锁机制] 深入理解乐观锁、悲观锁以及CAS乐观锁的实现机制原理分析
前言: 在并发访问情况下,可能会出现脏读.不可重复读和幻读等读现象,为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念.数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务 ...
- windows&lunix下node.js实现模板化生成word文件
最近在做了一个小程序!里面有个功能就是根据用户提交的数据,自动生成一份word文档返回给用户.我也是第一次做这功能,大概思路就是先自己弄一份word模板,后台接受小程序发过来的数据,再根据这些数据将相 ...
- Scrapy爬取Ajax(异步加载)网页实例——简书付费连载
这两天学习了Scrapy爬虫框架的基本使用,练习的例子爬取的都是传统的直接加载完网页的内容,就想试试爬取用Ajax技术加载的网页. 这里以简书里的优选连载网页为例分享一下我的爬取过程. 网址为: ht ...
- Spring学习(一):理解IoC容器
序言 记得刚毕业那会儿,出来招工作被问到Spring的核心时,都觉得简单的一笔,直接说不就是IoC(控制反转)和DI(依赖注入)么,然后省略一万字对两个名词的解释.最近空来整理了一下Spring中Io ...
- JDBC mysql 相关内容笔记
解决乱码: url字符串加上?useUnicode=true&characterEncoding=utf-8; mysql数据库无法插入中文数据问题:将mysql数据库的编码改为utf-8; ...
- Android studio 2 版本升级 Android studio 3 版本注意事项
1. compile 需要改成 implementation 或者 api例:implementation 'com.android.support:support-v4:23.4.0'详细规则 ht ...
- Windows Server 2016-活动目录NTP时间同步
在实际生产域环境下,往往会有很多跟时间不同步相关的问题,简单的说几种常见的情景:本地客户端时间与域控时间不统一导致无法加域:每次客户端电脑输入密码到进入桌面环境等N久:Skype for Busine ...