python练习4

Title1:使用递归实现目录和文件的操作

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

        当碰见文件时打印文件名称,当碰见目录时,则进入目录

        使用递归完成

# Title 1
import os
from os import path


def catalogue_file(input_path):
    global cataloguea  # 把cataloguea声明为全局变量
    # 把输入的路径划分为多个小部分,然后用列表装起来,再一个一个判断
    all_path = os.listdir(input_path)  
    for p in all_path:
        # 获取完整路径 判断是文件还是目录需要完整的路径,而不是一个文件名
        p_full = path.join(input_path, p)  
        if path.isfile(p_full):
            print(path.basename(p_full))
        elif path.isdir(p_full):
            # 判断如果是目录,就拼接两个的路径,相当于进入该目录
            cataloguea = path.join(input_path, p)  
            catalogue_file(p_full)
    return cataloguea

if __name__ == "__main__":
    # 1 YES
    input_path = input("请输入一个路径,分隔符请使用/或\\: ")
    catalogue_file(input_path)

Title2:判断用户输入字符串中字符次数

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

# Title 2
def Statistical_character(input_str):
    char_count = {}  # 这里因为最终需要打印的是字符和次数的一一对应,所有创建字典
    for char in input_str:
        if char in char_count:
            char_count[char] += 1  # 如果存在,字符对应的值就会加一
        else:
            char_count[char] = 1  # 字符不存在时,在字典末尾添加一个字符,并赋一个初始值

    return char_count


def print_character(input_str):
    result = Statistical_character(input_str)
    res = []
    print("每个字符出现的次数:")
    for char, count in result.items():
        if char not in res:
            res.append(char)
            print(f"'{char}': {count}")
    # 打开一个名为output.txt的文件,如果文件不存在,则会创建文件
    with open("python_module\\userinfo.text", 'w', encoding="utf-8") as file:
        file.write("\n每个字符出现的次数:\n")
        for char, count in result.items():
            file.write(f"'{char}': {count}\n")

if __name__ == "__main__":
    # 2 YES
    input_str = input()
    print_character(input_str)

Title3:找出一个区间的重复数

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

import random


def fount_repetition(n):
    int_list = [random.randint(1, n) for _ in range(n + 1)]
    print(int_list)
    panduan_list = []
    for i in int_list:
        if i not in panduan_list:
            panduan_list.append(i)
        else:
            print(i)

if __name__ == "__main__":
    # 3 YES
    # n = int(input())
    # fount_repetition(n)

Title4:验证登录

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

# Title 4
import hashlib
import re

# 假设用户名和密码存储在本地文件中
username = "zhangsan"
password = "123456"
salt = "qqq"
username_location = hashlib.md5(username.encode("utf-8"))
password_location = hashlib.md5(password.encode("utf-8"))
username_location.update(salt.encode("utf-8"))
password_location.update(salt.encode("utf-8"))


# 判读非法字符的函数
def check_input(input_str):
    patten = re.compile(r'^[a-zA-Z0-9]+$')
    if patten.match(input_str):
        return True
    else:
        print("请重新输入:")
        check_input(input_str)


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


# 对输入内容进行判断是否为空
def check_kongge(input_str):
    if input_str.strip() == "":
        return True
    else:
        return False


# 验证登录成功的函数
def is_login(username, password):
    # 预处理  --- 去除空格
    username = username.replace(" ", "")
    password = password.replace(" ", "")

    # 2. 验证
    # - 自定义添加其他验证,比如非法字符,去除空格,是否为空等等
    # if check_kongge(username) and check_kongge(password):  # 对于输入为空的判断
    #     if check_input(username) and check_input(password):  # 非法字符的判断
    if username == username_location and password == password_location:  # 用户名和密码的判断
        return True
    else:
        False


if __name__ == "__main__":
    # 4 NO
    # uesrname = input("请输入你的用户名:")
    # password = input("请输入你的用户名密码:")
    # print("登录成功" if is_login(md5_encryption(uesrname), md5_encryption(password)) else "登录失败")

问题:输入了一样的用户名和密码,还是打印登录失败,注释掉一部分的验证函数,还是不行

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python练习.ipynb文件是Jupyter Notebook格式的文件,用于进行Python编程的练习和学习。 在这个文件中,我们可以通过编写Python代码单元格来执行各种Python语句和程序。通过交互式的方式,我们可以直接在代码单元格中编写代码,并立即执行并查看结果。这种方式非常适合学习Python语法和调试代码。 Python练习.ipynb文件通常包含一系列的练习题目,每个题目都有对应的编程代码单元格和问题描述单元格。我们可以按照题目的要求在代码单元格中编写代码,并在问题描述单元格中查看题目的具体要求和提示。 这种交互式的编程方式使得Python练习更加灵活和高效。我们可以逐步地编写和调试代码,在每一个代码单元格中检查输出结果,并进行必要的修改和改进。同时,我们也可以在练习过程中随时查阅相关的文档和资料,帮助我们理解和解决问题。 通过完成Python练习.ipynb文件中的练习题目,我们可以提高我们的Python编程技能和解决问题的能力。随着练习的深入,我们可以逐渐掌握Python的各种语法和常见的算法和数据结构,为今后的编程工作和项目开发打下良好的基础。 总之,Python练习.ipynb文件是一个非常有用的学习工具,它可以帮助我们通过实践和交互的方式来学习和练习Python编程。通过不断地练习和挑战自己,我们可以提高自己的编程技能,并在日后的工作和学习中得到更大的发展和成功。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值