python之课后练习三
程序员文章站
2022-05-21 23:28:18
...
一、课后练习
1、题目需求:批量修改文件名
具体实现如下
import os
# 批量在文件名前加前缀
funFlag = 1 # 1表示添加标志, 2表示删除标志
folderName = './renameDir/'
# 获取指定路径的所有文件名字
folderName_List = os.listdir(folderName)
# 遍历输出所有文件名字
for oldname in folderName_List:
if funFlag == 1:
newName = '[西部开源]-' + oldname
elif funFlag == 2:
num = len('[西部开源]-')
newName = oldname[num:]
print("重命名 【%s】为【%s】成功! " % (oldname, newName))
os.rename(folderName + oldname, folderName + newName)
2、读取一个文件,显示除了以井号(#)开头的行以外的所有行。
我们文件里的内容如下:
具体实现和结果:
readfile_List = []
with open('doc/test.txt','r+') as f:
while True:
readfile = f.readline()
if readfile:
readfile_List.append(readfile)
else:
break
for item in readfile_List:
if not item.startswith("#"):
print(item)
3、制作一个"密码薄",其可以存储一个网址(例如 www.csdn.net),和一个密码(例如 123456),请编写程序完成这个“密码薄”的增删改查功能,并且实现文件存储功能。
具体实现如下:
"""
制作一个密码薄,其可以存储一个网址
实现增删改查功能,并且实现文件存储功能
"""
import os
import json
passwd_book = {}
def User_operate():
print('网址密码薄'.center(50, '~'))
print("""
1.添加网址信息
2.删除网址信息
3.修改网址信息
4.查看网址信息
9.退出系统
请选择:
""")
while True:
operate = int(input("请输入您想进行的操作:"))
if operate == 1:
add_website()
elif operate == 2:
del_website()
elif operate == 3:
revise_website()
elif operate == 4:
view_website()
elif operate == 9:
break
else:
print('请输入正确的操作符')
#查看网址信息和密码
def view_website():
global passwd_book
with open('doc/test.json') as f:
test = json.load(f)
print(test)
return
#添加新的网址信息和密码
def add_website():
global passwd_book
with open('doc/test.json', 'w+') as f:
website = input("请输入您想要添加的网站:")
if website not in passwd_book.keys():
web_Passwd = input("请输入网站的密码:")
passwd_book[website] = web_Passwd
passwd_book_str = json.dumps(passwd_book)
f.write(passwd_book_str)
passwd_book = json.loads(passwd_book_str)
else:
print('该网址已存在!')
return
#修改网址信息和密码
def revise_website():
global passwd_book
with open('doc/test.json', 'w+') as f:
website = input("请输入您想要修改的网站:")
if website in passwd_book.keys():
new_web = input('请输入新网址:')
new_Passwd = input("请输入网站修改后的密码:")
passwd_book[new_web] = new_Passwd
del passwd_book[website]
passwd_book_str = json.dumps(passwd_book)
f.write(passwd_book_str)
passwd_book = json.load(f)
else:
print('该网址不存在!')
return
#删除一个网址信息和密码
def del_website():
global passwd_book
with open('doc/test.json', 'w+') as f:
website = input("请输入您想要删除的网站:")
if website in passwd_book.keys():
del passwd_book[website]
passwd_book_str=json.dumps(passwd_book)
f.write(passwd_book_str)
passwd_book = json.loads(passwd_book_str)
else:
print('该网址不存在!')
return
User_operate()
4、无重复最长字符串
维护一个滑动窗口,窗口内的都是没有重复的字符,去尽可能的扩大窗口的大小,窗口不停的向右滑动。
1)如果当前遍历到的字符从未出现过,那么直接扩大右边界;
2)如果当前遍历到的字符出现过,则缩小窗口(左边索引向右移动),然后继续观察当前遍历到的字符;
3)重复(1)(2),直到左边索引无法再移动;
4)维护一个结果res,每次用出现过的窗口大小来更新结果res,最后返回res获取结果。
具体实现如下:
def StrLenght(s):
MaxLen = 0
s_Dict = {}
oneMax = 0
start = 0
for i in range(len(s)):
if s[i] in s_Dict and s_Dict[s[i]] >= start:
start = s_Dict[s[i]] + 1
oneMax = i - start + 1
s_Dict[s[i]] = i
MaxLen = max(MaxLen, oneMax)
return MaxLen
sStr = input('请输入一串英文字母:')
print(StrLenght(sStr))
5、矩阵置零
给定一个矩阵,如果一个元素为0,则所在行或列所有元素都为0
具体实现如下:
def Matrix_Zeroes(s):
columns, linenum = len(s), len(s[0])
zeroSeat = [[i, j] for i in range(columns) for j in range(linenum) if s[i][j] == 0]
for items in zeroSeat:
i, j = items[0], items[1]
s[i] = [0 for n in range(linenum)]
for k in range(columns):
s[k][j] = 0
return s
s = [
[1, 3, 1, 4],
[1, 0, 3, 1],
[1, 4, 0, 3],
[1, 1, 0, 1]
]
print(Matrix_Zeroes(s))
上一篇: Java数组课后练习
下一篇: 百度AI平台人脸动漫化python测试