软件基础第二次作业

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")

屏幕截图 2025-10-29 235005

v0

v0.2(在DEVC++中运行wc

v0

v0

v0

posted @ 2025-11-03 19:58  朱晨阳8272  阅读(3)  评论(0)    收藏  举报