题目1:
alex|123123|3
eric|123123|0
经用户操作后变成了:
alex|123123|3
eric|123123|3,并将最终的结果写到文件当中。
代码:
#!/usr/bin/python
# -*- coding:utf-8 -*-
#读取文件
f1 = open("db","r")
data = f1.read()
f1.close()
user_infor = data.split("\n") #利用换行符切分成字符创数组
user_infor_list = []
for item in user_infor:
temp = item.split("|")
v = {"name":temp[0],"passwd":temp[1],"times":temp[2]}
user_infor_list.append(v)
#改变相应的次数times
user_infor_list[1]["times"] = 3
f2 = open("db","w")
#将更改后的数据写到之前的文件当中
for item in user_infor_list:
temp = item["name"]+"|"+item["passwd"]+"|"+str(item["times"])+"\n"
f2.write(temp)
f2.close()
运行效果:
操作之前:
alex|123123|3
eric|123123|0
操作之后:
alex|123123|3
eric|123123|3
题目2:
编写基于文件存储功能的用户登录程序(3次登录失败,则锁定用户,此时用户不能再次登录)
alex|123123|1
eric|123123|2
注意事项:
a.如果当前用户登录times的数值为3,则用户不能再次登录,此时用户被锁定;
b.如果当前用户登录成功,times的数值重新设置为0,若用户登录失败,times的数值加1;
c.中间操作基于内存中的字典和列表,最后退出的时候将结果最终写入文件。
代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#读取文件的内容
fr1 = open("db", "r")
data = fr1.read()
fr1.close()
user_info = data.split("\n")
#将用户的完整信息存储到字典当中
user_info_list = {}
for item in user_info:
temp = item.split("|")
user_info_list[temp[0]] = {"pass_wd": temp[1], "times": temp[2]}
print(user_info_list)
#将用户名字的相关信息进行存储
user_name_list = []
for key in user_info_list:
user_name_list.append(key)
#基于列表、字典进行3次验证登录
num = 0
while num < 3:
user_name = input("请输入用户名:")
user_pass_wd = input("请输入密码:")
#先判断用户输入的用户名是否存在
if user_name in user_name_list:
#若用户的账户存在,在判断相应的times是否已经达到了3次
if int(user_info_list[user_name]["times"]) < 3:
#在账号和time都符合的条件下,在判断用户的密码是否正确
if user_info_list[user_name]["pass_wd"] == user_pass_wd:
print("登陆成功")
user_info_list[user_name]["times"] = 0
break
else:
print("对不起,您的密码输入错误.")
#密码输入错的时候times对应的数值要加1
user_info_list[user_name]["times"] = str(int(user_info_list[user_name]["times"]) + 1)
num += 1
else:
print("对不起,您的账户已经锁定,请用其余的账号登陆或者联系管理官进行解禁账号")
num += 1
else:
print("对不起您输入的用户账户不存在.")
num += 1
#最后将用户的文件操作结果更新到文件当中
f2 = open("db", "w")
j = 1
for key, item in user_info_list.items():
temp = key + "|" + item["pass_wd"] + "|" + str(item["times"])
if j != len(user_info_list):
f2.write(temp+"\n")
else:
f2.write(temp)
j += 1
运行结果示例:
请输入您的用户名:alex
请输入您的密码:zhang
对不起,密码输入错误
请输入您的用户名:alex
请输入您的密码:zhang
对不起,密码输入错误
请输入您的用户名:eric
请输入您的密码:zhang
对不起,密码输入错误
1、用户登录之前的文件内容:
alex|123123|0
eric|123123|0
2、用户登录之后的文件内容:
alex|123123|2
eric|123123|1
练习:
题目1:
a. 元素分类
有如下值集合 v1 = [11,22,33,44,55,66,77,88,99,90],
将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {‘k1’: 大于66的所有值, ‘k2’: 小于66的所有值}
代码:
#!/usr/bin/python
# -*- coding:utf-8 -*-
v1 = [11,22,33,44,55,66,77,88,99,90]
k1_list = []
k2_list = []
for i in v1:
if i < 66:
k1_list.append(i)
else:
k2_list.append(i)
v2 = {}
v2["k1"] = k2_list
v2["k2"] = k1_list
for item in v2.items():
print item
运行结果:
('k2', [11, 22, 33, 44, 55])
('k1', [66, 77, 88, 99, 90])
b. 功能要求:
v = 2000
要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
goods = [
{“num”:”01”,”name”: “电脑”, “price”: 1999},
{“num”:”02”,”name”: “鼠标”, “price”: 10},
{“num”:”03”,”name”: “游艇”, “price”: 20},
{“num”:”04”,”name”: “美女”, “price”: 998},
]
代码示例:
#!/usr/bin/python
# -*- coding:utf-8 -*-
goods = [
{"id":"01","name": "computer", "price": 1999},
{"id":"02","name": "mouse", "price": 10},
{"id":"03","name": "yacht", "price": 20},
{"id":"04","name": "girl", "price": 998},
]
print("当前的商品列表清单为:")
for item in goods:
temp = "id" + ":" + item["id"] +"\t"+ "name" + ":" + item["name"]+"\t"+"price" + ":" + str(item["price"])
print(temp)
salary = raw_input("请输入您的账户总资产:")
salary = int(salary)
salary_sum = salary
print("您当前的账户余额为%d"%salary)
while True:
id = raw_input("请输入购买商品的编号:")
num = int(raw_input("请输入相应商品的购买数量:"))
for item in goods:
if item["id"] == id :
salary = salary - item["price"] * num
if salary < 0:
print("对不起,您当前的账户余额不足,差%d元"%salary)
break
else:
pass
if salary < 0:
break
lable = raw_input("是否继续购买yes or no:")
if lable == "yes":
continue
else:
print("您当前消费金额为:%d"%(salary_sum - salary))
print("您当前账户的剩余余额为%d"%salary)
break
运行结果:
c. 用户交互,显示省市县三级联动的选择
dic = {
“河北”: {
“石家庄”: [“鹿泉”, “藁城”, “元氏”],
“邯郸”: [“永年”, “涉县”, “磁县”],
}
“河南”: {
‘郑州’: [‘巩义’, ‘新郑’, ‘登封’],
‘开封’: [‘兰考’, ‘通许’, ‘尉氏’],
}
“山西”: {
‘太原’: [‘清徐’, ‘阳曲’, ‘古交’],
‘大同’: [‘左云’, ‘大同’, ‘广灵’],
}
}
代码示例:
#!/usr/bin/python
# -*- coding:utf-8 -*-
dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
},
"河南": {
'郑州': ['巩义', '新郑', '登封'],
'开封': ['兰考', '通许', '尉氏'],
},
"山西": {
'太原': ['清徐', '阳曲', '古交'],
'大同': ['左云', '大同', '广灵'],
}
}
print("您可以查看的省份为:")
for key in dic.keys():
print(key)
while True:
province=input("请输入你要查看的省份:")
if province not in dic.keys():
print("对不起,您输入的省份有误,请重新输入.")
else:
print("%s省份下面的市包含:"%province)
value = dic[province]
for key in value.keys():
print(key)
while True:
city=input("请输入你要查看的市:")
if city not in value.keys():
print("对不起,您输入的市有误,请重新输入.")
else:
print("%s市下面的县包含:"%city)
list = value[city]
for county in list:
print(county)
break
运行结果: