python(作业4)

1.采用os模块及os.path模块,完成输出一个指定路劲下所有的文件

    当碰见文件时打印文件名称,当碰见目录时,则进入目录
    使用递归完成

from os import path
import os  
  
def list_files(directions):
    result = []
    for i in os.listdir(directions):
        joins = path.join(directions,i)
        if path.isfile(joins):
            result.append(joins)
        elif path.isdir(joins):
            result.extend(list_files(joins))
    return result


results= list_files("D:/python")
for i in results:
    print(i)

输出结果:

2.用户输入一个字符串,统计字符串中各字符出现的次数,并将结果写入本地文件

def count_string(input_string):  
    char_count= {}  
 
    for char in input_string:  
        if char in char_count:  
            char_count[char] += 1  
        else:  
            char_count[char] = 1  

    return char_count  
 
input_string = input("请输入一个字符串: ")  
 
char_count = count_string(input_string)
print(char_count)  

file_path = 'python_io/char_count.txt'  
  
print(f"字符计数已写入文件: {file_path}")

 输出结果:       

3.给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数 假设只有一个重复的整数,请找出这个重复的数,如[1,2,3,3,4],输出3

def count_string(input_string):  
    char_count= {}  
 
    for char in input_string:  
        if char in char_count:  
            char_count[char] += 1  
        else:  
            char_count[char] = 1  

    return char_count  
list = [1,2,2,3,4,4]
input_string = ''.join(map(str,list))
results = count_string(list)

for key,value in results.items():
    if value >= 2:
        print(key)

输出结果:

4.编写控制台登录系统,假设已加密的账号密码存储在本地文件中,文件名为userinfo.text,用户输入账户名及密码,并验证登录,提示是否登录成功

"""
    测试登录过程
        username 及 password都素加密的
        1.模拟存储在数据库中的用户名和密码就是我们自定义模块中加密的用户名和密码

        2.获取用户输入的用户名和密码 进行加密处理

        3.验证是否登录成功
"""
import TestHashLib as thl #自定义模块--已存在了加密后username 及 password
import hashlib

#测试获取加密的用户名(zhangsan)和密码(123456)
#模拟当前获取的加密username password 就存储在数据库MySQL中
username_mysql = thl.u.hexdigest()
password_mysql = thl.p.hexdigest()
salt = "yx" #盐值 --->干扰项,一般就是一堆字符

#定义加密函数
def md5_encryption(input_str):
    res = hashlib.md5(input_str.encode("utf-8")) #md5加密
    res.update(salt.encode("utf-8")) #盐值加密
    return res.hexdigest() #返回加密后字符序列

#验证登陆成功的函数
def is_login(username,password):
    #1.获取数据库中的用户名和密码(已有)
    #2.验证
    #自定义添加其他验证,比如去除空格,是否为空等等
    return True if username == username_mysql and password == password_mysql else False
       
#测试
if __name__ == "__main__":
    username = input("请输入用户名:")
    password = input("请输入密码:")
    print("登陆成功 "if is_login(md5_encryption(username),md5_encryption(password)) else "登陆失败")

输出结果:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值