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() # 关闭文件
    
    


  • 相关阅读:
    MVC模式-----struts2框架(2)
    MVC模式-----struts2框架
    html的<h>标签
    jsp脚本元素
    LeetCode "Paint House"
    LeetCode "Longest Substring with At Most Two Distinct Characters"
    LeetCode "Graph Valid Tree"
    LeetCode "Shortest Word Distance"
    LeetCode "Verify Preorder Sequence in Binary Search Tree"
    LeetCode "Binary Tree Upside Down"
  • 原文地址:https://www.cnblogs.com/jackfree/p/9622352.html
Copyright © 2011-2022 走看看