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 "登录失败")
问题:输入了一样的用户名和密码,还是打印登录失败,注释掉一部分的验证函数,还是不行