python作业习题集锦
1. 登录作业:
写一个登录程序,登录成功之后,提示XXX欢迎登录,登录失败次数是3次,要校验一下输入为空的情况
for i in range(3):
username=input('username:').strip()
passwd=input('passwd:').strip()
if username and passwd:
if username=='weixiaocui' and passwd=='':
print('%s欢迎登录'%username)
break
else:
print('账号/密码错误')
else:
print('账号/密码不能为空')
else:
print('错误失败次数太多!')
2.登录,注册,账号密码 存在文件里面,登录用注册时候的账号和密码
f=open('user.txt','a+',encoding='utf-8')
f.seek(0)
all_users={}
for line in f:
if line:
line=line.strip()
line_list=line.split(',')
all_users[line_list[0]]=line_list[1]
while True:
username=input('用户名:').strip()
passwd=input('密码:').strip()
cpasswd=input('确认密码:').strip()
if username and passwd and cpasswd:
if username in all_users:
print('用户名已经存在,请重新输入!')
else:
if passwd==cpasswd:
all_users[username]=passwd
f.write(username+','+passwd+'\n')
f.flush()#立即写到文件里面
print('注册成功!')
break
else:
print('两次输入密码不一致,请重新输入!')
else:
print('用户名/密码/确认密码不能为空!')
f.close()
#登录作业代码
f=open('user.txt',encoding='utf-8')
all_users={}#存放所有用户
for line in f:
if line:
line=line.strip()
line_list=line.split(',')
all_users[line_list[0]]=line_list[1]
while True:
username=input('用户名:').strip()
passwd=input('密码:').strip()
if username and passwd:
if username in all_user:
if passwd == all_users.get(username):
print('欢迎光临 %s'%username)
break
else:
print('密码输入错误!')
else:
print('用户不存在!')
else:
print('用户名/密码不能为空!')
f.close()
3.生成8位密码,输入一个生成的条数,然后生成包含大写,小写字母,数字的密码,写到文件里面
import random,string
count=int(input('请输入你要生成密码的条数:'))
all_passwds=[]
while True:
lower=random.sample(string.ascii_lowercase,1)#随机取一个小写字母
upper=random.sample(string.ascii_uppercase,1)#随机取一个大写字母
num=random.sample(string.digits,1)#随机取一个数字
other=random.sample(string.ascii_letters+string.digits,5)
res=lower+upper+num+other#把这4个list合并到一起
random.shuffle(res)#打乱顺序
new_res=''.join(res)+'\n'#因为res是list,所以转成字符串
if new_res not in all_passwds:#这里是为了判断是否重复
all_passwds.append(new_res)
if len(all_passwds)==count:#判断循环什么时候结束
break
with open('passwds.txt','w') as fw:
fw.writelines(all_passwds)
4.判断字典里面不一样的key,字典可能有多层嵌套
循环字典,从一个字典里面取到key,然后再从第二个字典里面取k,判断value是否一样
ok_req={
"version": "9.0.0",
"is_test": True,
"store": "",
"urs": "",
"device": {
"os": "android",
"imei": "",
"device_id": "CQliMWEyYTEzNTYyYzk5MzJmCTJlNmY3Zjkx",
"mac": "02:00:00:00:00:00",
"galaxy_tag": "CQliMWEyYTEzNTYyYzk5MzJmCTJlNmY3Zjkx",
"udid": "a34b1f67dd5797df93fdd8b072f1fb8110fd0db6",
"network_status": "wifi"
},
"adunit": {
"category": "VIDEO",
"location": "",
"app": "7A16FBB6",
"blacklist": ""
},
"ext_param":{
"is_start" : 0,
"vId":"VW0BRMTEV"
}
}
not_ok={
"version": "9.0.0",
"is_test": True,
"urs": "",
"store": "",
"device": {
"os": "android",
"imei": "",
"device_id": "CQliMWEyYTEzNTYyYzk5MzJmCTJlNmY3Zjkx",
"mac": "02:00:00:00:00:00",
"galaxy_tag": "CQliMWEyYTEzNTYyYzk5MzJmCTJlNmY3Zjkx",
"udid": "a34b1f67dd5797da93fdd8b072f1fb8110fd0db6",
"network_status": "wifi"
},
"adunit": {
"category": "VIDEO",
"location": "",
"app": "7A16FBB6",
"blacklist": ""
},"ext_param": {
"is_start": 0,
"vid": "VW0BRMTEV"
}
}
def compare(d1,d2):
for k in d1:
v1=d1.get(k)
v2=d2.get(k)
if type(v1)==dict:
compare(v1,v2)
else:
if v1!=v2:
print('不一样的k是【%s】,v1是【%s】 v2是【%s】'%(k,v1,v2))
#对称差集,两个集合里面都没有的元素,在a里有,在b里没有,在b里有,在a里没有的
res=set(d1.keys()).symmetric_difference(set(d2.keys()))
if res:
print('不一样的k',res)
compare(ok_req,not_ok)
5.商品管理的程序
1.添加商品
2.查看商品
3.删除商品
4.商品都存在文件里面
5.存商品的样式:{'car':{'color':'red','count':5,'price':100},'car2':{'color':'red','count':5,'price':100}}
PRODUCTS_FILE='products'
def op_file(filename,content=None):
f=open(filename,'a+',encoding='utf-8')
f.seek(0)
if content!=None:
f.truncate()
f.write(str(content))
f.flush()
else:
res=f.read()
if res:
products=eval(res)
else:
products={}
return products
f.close()
def check_price(s):
s = str(s)
if s.count('.')==1:
left=s.split('.')[0]
right=s.split('.')[1]
if left.isdigit() and right.isdigit():
return True
elif s.isdigit() and int(s)>0:
return True
return False
def check_count(count):
if count.isdigit():
if int(count)>0:
return True
return False
def add_product():
while True:
name=input('name:').strip()
price=input('price:').strip()
count=input('count:').strip()
color=input('color:').strip()
if name and price and count and color:
products=op_file(PRODUCTS_FILE)
if name in products:
print('商品已经存在')
elif not check_price(price):
print('价格不合法')
elif not check_count(count):
print('商品数量不合法')
else:
product={'color':color,'price':'%.2f'%float(price),'count':count}
products[name]=product
op_file(PRODUCTS_FILE,products)
print('商品添加成功')
break
else:
print('必填参数未填')
def view_products():
products=op_file(PRODUCTS_FILE)
if products:
for k in products:
print('商品名称【%s】,商品信息【%s】'%(k,products.get(k)))
else:
print('当前没有商品')
def del_products():
while True:
name=input('name:').strip()
if name:
products=op_file(PRODUCTS_FILE)
if products:
if name in products:
products.pop(name)
op_file(PRODUCTS_FILE,products)
print('删除成功!')
break
else:
print('你输入的商品名称不存在,请重新输入!')
else:
print('当前没有商品')
else:
print('必填参数未填')
def start():
choice=input('请输入你的选择:1、添加商品2、查看商品3、删除商品,q、退出:').strip()
if choice=='':
add_product()
elif choice=='':
view_products()
elif choice=='':
del_products()
elif choice=='q':
quit('谢谢光临')
else:
print('输入错误!')
return start()
start()
6.写清理日志的一个脚本,要求转入一个路径,只保留3天以内的日志,剩下的全部删掉。
import os,datetime
def clean_log(path):
if os.path.exists(path) and os.path.isdir(path):
today = datetime.date.today() #2017-01-02
yesterday = datetime.date.today()+ datetime.timedelta(-1)
before_yesterday = datetime.date.today()+ datetime.timedelta(-2)
file_name_list = [today,yesterday,before_yesterday]
for file in os.listdir(path):
file_name_sp = file.split('.')
if len(file_name_sp)>2:
file_date = file_name_sp[1] #取文件名里面的日期
if file_date not in file_name_list:
abs_path = os.path.join(path,file)
print('删除的文件是%s,'%abs_path)
os.remove(abs_path)
else:
print('没有删除的文件是%s'%file)
else:
print('路径不存在/不是目录')
clean_log(r'')
python作业习题集锦的更多相关文章
- Python作业第一课
零基础开始学习,最近周边的同学们都在学习,我也来试试,嘿嘿,都写下来,下次不记得了还能来看看~~ Python作业第一课1)登陆,三次输入锁定,下次不允许登陆2)设计一个三级菜单,菜单内容可自行定义, ...
- Python作业-选课系统
目录 Python作业-选课系统 days6作业-选课系统: 1. 程序说明 2. 思路和程序限制 3. 选课系统程序目录结构 4. 测试帐户说明 5. 程序测试过程 title: Python作业- ...
- python作业ATM(第五周)
作业需求: 额度 15000或自定义. 实现购物商城,买东西加入 购物车,调用信用卡接口结账. 可以提现,手续费5%. 支持多账户登录. 支持账户间转账. 记录每月日常消费流水. 提供还款接口. AT ...
- (转)Python作业day2购物车
Python作业day2购物车 原文:https://www.cnblogs.com/spykids/p/5163108.html 流程图: 实现情况: 可自主注册, 登陆系统可购物,充值(暂未实现) ...
- Python开发面试集锦
我正在编写一套python面试开发集锦,可以帮忙star一下,谢谢! 地址:GitHub专栏
- Python作业之三次登陆锁定用户
作业之三次登陆锁定用户 作业要求如下: 1. 输入用户名和密码 2. 认证成功提示欢迎信息 3. 认证失败三次锁定用户 具体代码如下: 方法1: import os#导入os模块 if os.path ...
- python作业高级FTP
转载自:https://www.cnblogs.com/sean-yao/p/7882638.html 作业需求: 1. 用户加密认证 2. 多用户同时登陆 3. 每个用户有自己的家目录且只能访问自己 ...
- Python作业
1使用while 循环输入1,2,3,4,5,6,,8,9,10 count = 0 while count<10: count+=1 if count ==7: continue print( ...
- python作业简单FTP(第七周)
作业需求: 1. 用户登陆 2. 上传/下载文件 3. 不同用户家目录不同 4. 查看当前目录下文件 5. 充分使用面向对象知识 思路分析: 1.用户登陆保存文件对比用户名密码. 2.上传用json序 ...
随机推荐
- Linux┊详解udev
是一小部分例子,如果你的系统采用了udev方式,那你应该可以看到更多的规则.如果你想修改设备的权限或者创建信的符号连接,那么你需要熟读这些规则,特别是要仔细注意你修改的那些与之相关的设备. 修改你的u ...
- Vue混入:全局混入
一 项目结构 二 main.js import Vue from "vue"; import App from "./App.vue"; Vue.config. ...
- hdu6575Budget
Problem Description Avin’s company has many ongoing projects with different budgets. His company rec ...
- Orcle获取当前时间加小时
如下是oracle 获取当前数据库时间加2个小时 select to_date(TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24: ...
- Ubuntu下的图形化多线程下载器XDM
目录 1.下载 2.安装 3.浏览器支持 使用Ubuntu下载东西经常过于缓慢,因此需要多进程下载器. 1.下载 下载链接:http://xdman.sourceforge.net/#download ...
- [Linux] 002 预备知识
1. 开源软件 (1) 常见开源软件 Apache NGINXTM MySQL PHP Saamba mongoDB Python Ruby Sphinx -- (2) 开源软件的特点 绝大多数开源软 ...
- docker pull理解误区
docker run 命令 如果local image中有对应 镜像+tag 不会从新拉取镜像 docker pull 会进行拉取 先进行镜像更改 [root@master01 ~]# docker ...
- python学习第三天格式化输出%s %d
编程语言为什么要格式化输出吗,一般print()就够了,有些复杂的格式输出比较麻烦,用格式化输出更加高效, info=""" ---------------------- ...
- avaScript —— 常用正则表达式
用户名 /^[a-z0-9_-]{3,16}$/ 密码 /^[a-z0-9_-]{6,18}$/ 十六进制值 /^#?([a-f0-9]{6}|[a-f0-9]{3})$/ 电子邮箱 /^([a-z0 ...
- 20180209-sys模块
sys模块常用操作如下: 1.命令行参数 sys.argv 第一个元素是程序本身路径 # 1.命令行参数 第一个元素是程序本身路径 ret = sys.argv print('命令行参数:',ret ...