python练习题目1

来源:互联网 发布:百度数据挖掘工程师 编辑:程序博客网 时间:2024/06/01 07:28

题目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|3eric|123123|0

操作之后:

alex|123123|3eric|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 = 0while 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 = 1for 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|0eric|123123|0

2、用户登录之后的文件内容:

alex|123123|2eric|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

运行结果:
这里写图片描述

1 0
原创粉丝点击