关于#python#的问题,请各位专家解答!

import string

def read_file(file):

with open(file, 'r', encoding='utf-8') as f:
    return f.read()

def classify_char(txt):

upper, lower, digit, a_space, other = 0, 0, 0, 0, 0
for ch in txt:
    if ch.islower():
        lower = lower + 1
    elif ch.isupper():
        upper = upper + 1
    elif ch.isnumeric():
        digit = digit + 1
    elif ch==" ":
        a_space = a_space + 1
    else:
        other = other + 1
return upper, lower, digit, a_space, other

if name == 'main':
filename = input() # 读入文件名
text = read_file(filename)
classify = classify_char(text)
print('大写字母{}个,小写字母{}个,数字{}个,空格{}个,其他{}个'.format(*classify))

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7500097
  • 这篇博客你也可以参考下:python __name =__main 什么含义
  • 除此之外, 这篇博客: python——__name__ == __main__用法理解中的 的理解 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • __name__方法是python中的一个内置函数,记录的值就是一个字符串

    如果是在当前文件中执行,记录的值就是__main__

    在test1文件中编写

    print(__name__)		#输出__manin__说明此时是在本文件中执行
    
    输出结果:
    C:\Users\qun\AppData\Local\Programs\Python\Python37\python.exe C:/Users/qun/Desktop/python封装项目/test1.py
    __main__
    

    如果是在另外的py文件中执行,记录的值就是模块名

    在test2文件中编写

    import test1		#输出的是文件文件名,说明是在其他文件中导入执行的
    
    输出结果:
    C:\Users\qun\AppData\Local\Programs\Python\Python37\python.exe C:/Users/qun/Desktop/python封装项目/test2.py
    test1
    
  • 您还可以看一下 刘超老师的python-包与模块的使用课程中的 name变量的作用小节, 巩固相关知识点

代码没有发现明显的问题

import string

def read_file(file):
    with open(file, 'r', encoding='utf-8') as f:
        return f.read()
def classify_char(txt):
    upper, lower, digit, a_space, other = 0, 0, 0, 0, 0
    for ch in txt:
        if ch.islower():
            lower = lower + 1
        elif ch.isupper():
            upper = upper + 1
        elif ch.isnumeric():
            digit = digit + 1
        elif ch==" ":
            a_space = a_space + 1
        else:
            other = other + 1
    return upper, lower, digit, a_space, other

filename = input() #读入文件名
text = read_file(filename)
classify = classify_char(text)
print('大写字母{}个,小写字母{}个,数字{}个,空格{}个,其他{}个'.format(*classify))

注意缩进,注意输入的文件名是否正确。