软件基础第二次作业
def count_characters(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
return len(f.read())
def count_words(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
return len(re.findall(r'\b[a-zA-Z]+\b', content))
def count_sentences(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
sentences = re.split(r'[.!?]+', f.read())
return len([s for s in sentences if s.strip()])
def count_code_lines(file_path):
code_lines = 0
blank_lines = 0
comment_lines = 0
in_multiline_comment = False
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
line = line.rstrip('\n')
stripped_line = line.strip()
if not in_multiline_comment:
else:
if '*/' in stripped_line:
in_multiline_comment = False
comment_lines += 1
continue
if not stripped_line:
blank_lines += 1
else:
code_lines += 1
if '/*' in stripped_line:
in_multiline_comment = True
if '*/' in stripped_line:
in_multiline_comment = False
comment_lines += 1
continue
else:
comment_lines += 1
continue
if stripped_line.startswith('//') or stripped_line.startswith('#'):
comment_lines += 1
continue
return code_lines, blank_lines, comment_lines
if name == "main":
if len(sys.argv) < 3:
printf("用法:wc.py [参数] [文件名]")
printf("参数说明:")
printf(" -c 统计字符数(含所有字符)")
printf(" -w 统计单词数(英文单词)")
printf(" -s 统计句子数(以 .!? 结尾)")
printf(" -cl 统计代码行(有效代码行、空行、注释行)")
sys.exit(1)
param = sys.argv[1]
file_name = sys.argv[2]
if param == '-cl':
code, blank, comment = count_code_lines(file_name)
print(f"有效代码行:{code}")
print(f"空行:{blank}")
print(f"注释行:{comment}")
elif param == '-c':
print(f"字符数:{count_characters(file_name)}")
elif param == '-w':
print(f"单词数:{count_words(file_name)}")
elif param == '-s':
print(f"句子数:{count_sentences(file_name)}")
else:
print("无效参数,请使用 -c、-w、-s 或
拓展:
import sys
import re
def count_characters(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
return len(content)
def count_words(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
words = re.findall(r'\b[a-zA-Z]+\b', content)
return len(words)
def count_sentences(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
sentences = re.split(r'[.!?]+', content)
sentences = [s for s in sentences if s.strip()]
return len(sentences)
if name == "main":
if len(sys.argv) < 3:
print("用法:wc.py [参数] [文件名]")
print("参数说明:-c 统计字符数;-w 统计单词数;-s 统计句子数")
sys.exit(1)
try:
with open(filename, "r", encoding="utf-8") as f:
text = f.read()
except FileNotFoundError:
print(f"Error: cannot open file '{filename}'")
sys.exit(1)
if option == "-c":
result = count_characters(text)
print(result)
elif option == "-w":
result = count_words(text)
print(result)
elif option == "-s":
result = count_sentences(text)
print(result)
else:
print("Invalid option. Use -c / -w / -s")
sys.exit(1)
param = sys.argv[1]
file_name = sys.arv[2]
if paran == '-c':
print(f"字符:{count_characters(file_name)}")
elif param == '-w':
print(f"单词:{count_words(file_name)}")
elif param == '-s':
print(f"句子:{count_sentences(file_name)}")
else:
print("无效,请使用 -c、-w 或 -s")






浙公网安备 33010602011771号