zoukankan      html  css  js  c++  java
  • 内置函数练习题和总结

    需实现功能:

    1. 打印个人信息

    2. 修改个人信息

    3. 修改密码

    思路:

    1.每个功能各定义一个内置函数

    2.每个人的信息在文件都是在一起,规律是一行一条个人信息,用,分割开。

      那么用readlines()方法遍历文件,然后变成列表,用。split(‘,’)分割开成各个元素

    3. 以账号和密码是否正确作为while循环条件,修改密码后可实现重新输入账号登陆

    4.输入3次错误和按Q退出在else,elif可实现,与其他变量没关系,这个完成前面功能最后实现

    实现过程和踩过的坑:

    1.先把文件按照个人信息分开,用,分割变成列表。

    把个人信息的列表用一个大的列表集合,但user其实是在嵌套的列表里,所以无法根据user索引。故换成字典,用user作为key值索引

    for i in iterable ,iterable只要是可迭代对象即可

    列表添加对象用append,字典用key-value对

    2.打印选择信息列表

    3.写打印个人信息函数,因为后面要做修改密码功能,所以这里密码行不显示

    person_model = ['user','password','name','age','job','deparment','phone']
    使用一个列表模板,在用enumerate遍历个人信息列表时用索引person_model[i]实现遍历列表信息时加入新的信息展示
    作一个if判断不展示特定的i的信息

    4.写修改个人信息的函数

    输入新的信息,根据索引替换掉,还需把信息更新到文件,故需写一个把字典D写入文件的函数

    遍历D,然后按照key索引遍历所有个人信息列表

    把列表还原成带,的字符串‘,’.join(D[key])

     .seek(0)

    .trancate()

    .flush()#由于前面先读再写,所以指针在最后,需回到开头

    最后加

    5.修改密码

    修改密码相当于修改其中password一项即可,然后保存信息到文件

    对于输入的选择要判断字符和数字可能,还有超出索引的可能

    .isdigit()

    input()后每次加.strip()避免空格的输入错误

    第二次对比答案后依然存在的疑问:

    年龄不能有特殊符号,而isdigit()只能判断是否数字,特殊符号如{}它检测不到

    D={}
    attemp_time = 1
    f = open('D:func1.txt', 'r+')
    li = f.readlines()


    for i in li:
    i = i.split(',')
    D[i[0]] = i
    print(D) # 建立一个字典DIC,以user作为索引,映射 个人信息的列表

    while attemp_time < 4:
    user = input('user:>>>').strip()
    password = input('password:>>>').strip()
    while user in D and password == D[user][1]: # 密码正确,则自动执行下面
    print('welcome {}'.center(50,'-').format(user))
    print(menu) # 询问选择是什么?
    choice = input('what choice:>>>').strip()
    if choice.isdigit():
    choice = int(choice)
    if choice == 1: # 打印个人信息
    display_list(user)
    elif choice == 2: # 修改个人信息
    display_list(user)
    info_num = input('what info you want to change?').strip()
    if info_num.isdigit():
    info_num = int(info_num)
    if info_num == 1: #不允许修改密码
    print('input wrong, again1')
    elif info_num >= 0 and info_num < len(D[user]):
    change_info(info_num) # 新信息替换旧信息
    save_to_file() # 把修改信息写回文件

    elif info_num < 0 or info_num >= len(D[user]): # 超出数字范围
    print('input wrong, again')

    elif info_num == 'Q': # 退出程序
    print('thank you for using,exit')
    break
    else: # 输入的是字母,提示输入错误
    print('input wrong, again')

    elif choice == 3: # 修改密码
    change_info(1)
    print('password changed,please enter again')
    save_to_file() # 把修改信息写回文件
    else:
    print('please enter int')



    else:
    print('user or password wrong, {} time, 3 time out'.format(attemp_time)) # 3次尝试,不行后退出
    attemp_time += 1

    f.close() # 关闭文件
    
    


  • 相关阅读:
    CV方向的高效阅读英文文献方法总结
    数据增强方法总结
    CNN结构演变总结(三)设计原则
    CNN结构演变总结(二)轻量化模型
    CNN结构演变总结(一)经典模型
    CNN可视化技术总结(四)--可视化工具与项目
    Codeforces972 D. Kuro and GCD and XOR and SUM 01Trie
    Codeforces 982 D. Shark
    Codeforces Round #700 (Div. 2) A~D题解
    codeforces 1004 D. Sonya and Matrix 构造
  • 原文地址:https://www.cnblogs.com/jackfree/p/9622352.html
Copyright © 2011-2022 走看看