练习1 (批量修改文件名)
题目要求:
运行程序之前
运行程序之后
下面为编写的代码,可供参考:
import os
def modify_filename(dirname):
"""
:param dirname: 操作的目录
:return:
"""
# 1. 判断查找的目录是否存在, 如果不存在, 显示报错
if not os.path.exists(dirname):
print("Error: 目录%s不存在" % (dirname))
# 2. 如果文件存在,做如下操作:
else:
# 2-1). 列出指定目录的所有文件名;
filenames = os.listdir(dirname)
# 2-2). 依次遍历目录的每一个文件;
for filename in filenames:
new_filename = "[西部开源]-" + filename
full_old_filename = os.path.join(dirname, filename)
full_new_filename = os.path.join(dirname, new_filename)
# 2-3). 重命名
os.rename(full_old_filename, full_new_filename)
print("重命名【%s】 为【%s】成功!" % (filename, new_filename))
modify_filename('img')
运行程序后,输出为:
练习2 无重复字符的最长子串
题目要求如下:
有两种解决思路:
第一种:暴力破解法
第二种:滑动窗口
维护一个滑动窗口,窗口内的都是没有重复的字符,去尽可能的扩大窗口的大小,窗口不停的向右滑动。
- 如果当前遍历到的字符从未出现过,那么直接扩大右边界;
- 如果当前遍历到的字符出现过,则缩小窗口(左边索引向右移动),然后继续观察当前遍历到的字符;
- 重复1、2,直到左边索引无法再移动;
- 维护一个结果res,每次用出现过的窗口大小来更新结果res,最后返回res获取结果。
编写代码如下,可供参考:
def longest_str(str):
window = str[0]
res = 1
l = len(str)
for letter in str[1:l+1]:
if letter not in window:
window += letter
res += 1
else:
new_window = window[1:len(window)+1]
if letter in new_window:
new_window = new_window[1:len(window) + 1]
else:
new_window = window[1:len(window) + 1] + letter
return res
print(longest_str('abcabcbb'))
输出结果为:
练习3
读取一个文件,显示除了以井号(#)开头的行以外的所有行。
代码如下,可供参考:
import os
def unsign_file(filename):
f = open(filename,'r')
content = f.readlines()
for i in content:
i.strip(" ")
if i[0] == '#':
continue
else:
print(i)
unsign_file('passwd')