• 【week1错题集】


    day9【2.f】

    # day9 题2.f
    '''
    有如下文件,t1.txt,里面的内容为:
        葫芦娃,葫芦娃,
        一根藤上七个瓜
        风吹雨打,都不怕,
        啦啦啦啦。
        以r模式打开文件,从‘风吹雨打.....’开始读取,一直读到最后。
    '''
    
    with open("t1.txt",mode="r",encoding="utf-8") as fp:
        lst = fp.readlines()
        for i in lst[2:]:
            print(i)
    day9 题2.f

    打印菱形小星星

    # day6 打印菱形小星星
    """
    # 行数和空格之间的关系
    -6 -> 5
    -5 -> 4
    -4 -> 3
    -3 -> 2
    -2 -> 1
    -1 -> 0
    0  -> 跳过
    
    # 行数 和 星星之间的关系
    n = 11
    -6 -> 1
    -5 -> 3
    -4 -> 5
    
    13 - abs(i) * 2
    13 - 12 = 1
    13 - 10 = 3
    13 - 8  = 5
    """
    
    # abs用来算绝对值
    n = 29
    hang = n // 2 + 1
    
    for i in range(-hang, hang + 1):
    
        if i == 0:
            continue
    
        # 打印空格
        print(" " * (abs(i) - 1), end="")
        # 打印星星
        print("*" * (n + 2 - abs(i) * 2))
    day6 打印菱形小星星

    任意个数字符串的拼接

    # 任意个数字符串的拼接
    """
    班长:宋云杰
    班花:刘彩霞
    班草:刘子涛
    吃瓜群众:牧树人,晏国彰,刘聪
    """
    
    def func(**kwargs):
        print(kwargs)
        # 定义一个字典,存放每一位同学的身份
        dic = {"monitor":"班长","class_flower":"班花","class_grass":"班草"}
        strvar1 = ""
        strvar2 = ""
        
        # 遍历字典中的键值对
        for k,v in kwargs.items():
            print(k,v) # monitor 宋云杰  class_flower 刘彩霞 class_grass 刘子涛 ....
            # 判断键是否在字典当中,如果在,获取对应的身份,拼装成字符串
            if k in dic:
                strvar1 += dic[k] + ":" + v + "
    " # 班长 + ":" + 宋云杰 + '
    '
            else:
                strvar2 += v + ","
        
        # 去掉右边多余的
    和,形成最后的效果
        print(strvar1.strip())
        print("吃瓜群众:"+ strvar2.rstrip(","))
        
    
    
    func(monitor="宋云杰",class_flower="刘彩霞",class_grass="刘子涛",eatgua1="牧树人",eatgua2="晏国彰",eatgua3="刘聪")
    kwargs:任意个数字符串的拼接

     登录注册程序

    # 注册:
        # 1.检测两次密码如果相同,确认注册成功
        # 2.检测两次密码如果不同,提示两次密码不一致
        # 3.用户名不能重复
        
    # accountlst存放所有账号
    accountlst = []
    sign = True
    with open("user.txt",mode="a+",encoding="utf-8") as fp:
        while sign:
            # 输入用户名
            username = input("请输入要注册的用户名:")    
            if username == "" or " " in username:
                print("对不起,该名字含有非法字符")
            else:
                # 把数据从文件当中获取            
                fp.seek(0)
                lst = fp.readlines()
                for i in lst:
                    account = i.strip().split(":")[0]
                    accountlst.append(account)
                        
                print(accountlst)
                # 判断该名字是否已经存在
                if username in accountlst:
                    print("抱歉,改名字已经使用~")
                else:
                    # 检测密码
                    pwd = input("请输入您的密码")
                    while True:
                        pwd2 = input("请确认您的密码,按q退出~")
                        # 如果密码相同
                        if pwd == pwd2:
                            # 拼接字符串
                            strvar = username + ":" + pwd + "
    "
                            # 写入文件
                            fp.write(strvar)
                            # 终止循环
                            sign = False
                            # 打印信息
                            print("注册成功~")
                            break
                        elif pwd2.upper() == "Q":
                            # sign = False
                            break
                            
                        else:
                            print("对不起,两次密码不一致~")
                        
        
    # ### 登录
        # 1.账户密码会预先记录在文件中
        # 2.输入账号密码:如果都正确,登录成功
        # 3.如果用户登录时进行三次校验,都不对,记录黑名单文件中
        # 4.如果是黑名单的用户,禁止下次再次登录
    
    # 存账户
    accountlst = []
    # 存密码
    pwdlst = []
    # 存黑名单
    blacklst = []
    
    sign = True
    while sign:
        username = input("请输入您的用户名:")
        # 获取文件当中的账号和密码
        with open("user.txt",mode="a+",encoding="utf-8") as fp:
            fp.seek(0)
            lst = fp.readlines()
            for i in lst:
                user,pwd = i.strip().split(":")
                # print(username,password)
                accountlst.append(user)
                pwdlst.append(pwd)
                
            # print(accountlst)
            # print(pwdlst)
            # 判断该用户是否存在
            if username in accountlst:
                # 判断当前用户是否是黑名单中的用户
                with open("black.txt",mode="a+",encoding="utf-8") as fp:
                    fp.seek(0)
                    lst = fp.readlines()
                    for i in lst:
                        blacklst.append(i.strip())
    
                if username in blacklst:
                    print("抱歉,该用户已经被冻结了")
                else:
                    # 如何找到该账户对应的密码呢?
                    num = accountlst.index(username)
                    pwd = pwdlst[num]
                    # print(num,pwd)
                    """"""
                    # 判断用户输入的密码是否正确
                    times = 1
                    while times <= 3:
                        pwd2 = input("请输入您的密码")
                        # 输入成功情况下,终止循环,程序结束
                        if pwd == pwd2:
                            print("登录成功")
                            sign = False
                            break
                        else:
                            # 剩余的次数 = 总次数 - 使用次数
                            print("你还剩下%s次机会" % (3 - times))                    
                            
                            # 如果用掉了所有的次数,直接加入黑名单,防止下次登录
                            if times == 3:
                                with open("black.txt",mode="a+",encoding="utf-8") as fp:                        
                                    strvar = username + "
    "
                                    fp.write(strvar)
                                print("抱歉,您的账户已经被冻结~")                
                        times += 1 
            else:
                print("该用户不存在~")
            
     
     
  • 相关阅读:
    C++Josephus问题
    C++背包示例
    C++1000以内的质数
    as3+asp+access编码
    fb设置flashplayer
    三视图示例
    正确实现 IDisposable 接口
    .net垃圾回收和CLR 4.0对垃圾回收所做的改进之二
    .net垃圾回收和CLR 4.0对垃圾回收所做的改进之三
    CLR 全面透彻解析:大型对象堆揭秘
  • 原文地址:https://www.cnblogs.com/libolun/p/13339752.html
Copyright © 2020-2023  润新知