温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python怎么计算球的个数

发布时间:2021-12-17 17:44:35 阅读:164 作者:iii 栏目:大数据
Python开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要讲解了“Python怎么计算球的个数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么计算球的个数”吧!

代码如下:

# author: DE8UG# 创建垃圾桶和垃圾# 规则:k:v,一个k对应一个v,代码表示用冒号分割# 输入# 判断# 保存# 函数# 综合import jsonrule = {    "湿垃圾": ["菜叶", "橙皮", "葱", "饼干"],    "干垃圾": ["旧浴缸", "盆子", "海绵", "卫生纸"]}# print('加载文件:', ljt_gan)def load_data(filename):    with open(filename) as f:        data = json.load(f)        return datadef reng_laji(rule_k, laji, ljt):    if rule_k == ljt['name']:        ljt['data'].append(laji)def fenlei(laji, rule, ljt):    for k, v in rule.items():        print(k, v)        if laji in v:            print('找到了垃圾:', laji, k)            reng_laji(k, laji, ljt)            # reng_laji(k, laji, ljt_shi)# 用函数封装写文件的代码def save_to_file(filename, data):    with open(filename, 'w') as f:        json.dump(data, f)def main():    # 定义垃圾桶    ljt_shi = {        'name': "湿垃圾",        'data': []    }    ljt_gan = {        'name': "干垃圾",        'data': []    }    # 加载已有的垃圾    ljt_gan = load_data('gan.json')    ljt_shi = load_data('shi.json')    print('加载文件:', ljt_gan, ljt_shi)    # 扔垃圾    laji = input("输入要扔的垃圾:")    print("垃圾:", laji)    # 分类    fenlei(laji, rule, ljt_gan)    fenlei(laji, rule, ljt_shi)    print('-'*20)    print(ljt_shi)    print(ljt_gan)    # 调用函数,保存到具体的垃圾桶文件    save_to_file('gan.json', ljt_gan)    save_to_file('shi.json', ljt_shi)if __name__ == "__main__":    main()

这段代码不长,但是包含了变量,注释,函数等部分,可以用来做第一个分析目标了。

以下内容用代码和注释来解释做了什么。

# Python算个球# author:DE8UG# 首先准备好目标文件filename = 'rengleme_07.py'# 写函数得到里面所有行def get_lines(filename):    with open(filename) as f:        return f.readlines()# 执行这个函数打印的话,会是下面这一大堆字符串,但,注意看,是个列表。那就好办了"""['# author: DE8UG\n', '# 创建垃圾桶和垃圾\n','# 规则:k:v,一个k对应一个v,代码表示用冒号分割\n','# 输入\n', '# 判断\n', '# 保存\n', '# 函数\n', '# 综合\n', '\n', '\n','import json\n', '\n', '\n',    'rule = {\n', '    "湿垃圾": ["菜叶", "橙皮", "", "饼干"],        \n', '         "干垃圾": ["旧浴缸", "盆子", "海绵", "卫生纸"]\n', '}\n',              '\n', '\n',                  "# print('加载文件:', ljt_gan)\n",'def load_data(filename):\n',    '    with open(filename) as f:\n',        '        data = json.load(f)\n',            '        return data\n', '\n', '\n', 'def reng_laji(rule_k, laji, ljt):\n', "    if rule_k == ljt['name']:\n", "        ljt['data'].append(laji)\n", '\n', '\n', 'def fenlei(laji, rule, ljt):\n', '    for k, v in rule.items():\n', '        print(k, v)\n', '        if laji in v:\n', "            print('找到了垃圾:', laji, k)\n", '            reng_laji(k, laji, ljt)\n', '            # reng_laji(k, laji, ljt_shi)\n', '        \n', '\n', '# 用函数封装写文件的代码\n', 'def save_to_file(filename, data):\n', "    with open(filename, 'w') as f:\n", '        json.dump(data, f)\n', '\n', '\n', 'def main():\n', '\n', '    # 定义垃圾桶\n', '    ljt_shi = {\n', '        \'name\': "湿垃圾",\n', "        'data': []\n", '    }\n', '\n', '    ljt_gan = {\n', '        \'name\': "干垃圾",\n', "        'data': []\n", '    }\n', '\n', '    # 加载已有的垃圾\n', "    ljt_gan = load_data('gan.json')\n", "    ljt_shi = load_data('shi.json')\n", '\n', "    print('加载文件:', ljt_gan, ljt_shi)\n", '\n', '    # 扔垃圾\n', '    laji = input("输入要扔的垃圾:")\n', '    print("垃圾:", laji)\n', '\n', '    # 分类\n', '    fenlei(laji, rule, ljt_gan)\n', '    fenlei(laji, rule, ljt_shi)\n', '\n', "    print('-'*20)\n", '    print(ljt_shi)\n', '    print(ljt_gan)\n', '\n', '    # 调用函数,保存到具体的垃圾桶文件\n', "    save_to_file('gan.json', ljt_gan)\n", "    save_to_file('shi.json', ljt_shi)\n", '\n', '\n', 'if __name__ == "__main__":\n', '    main()\n', '\n', '\n', '\n']"""# 我们定义一下结果格式,把每一行代码格式化一下为字典,包含行号,字符串,类型,含义四部分,然后组合为新的列表[{    'line':1,    'str':'def load_data(filename):\n',    'type':'function',   # code, comment, import, var    'mean':'函数load_data,包含参数:filename'}]def analysis_code(lines):    """分析每一行代码,根据不同特点,划分不同类型,注意换行的变量和函数会有内部代码,我们通过上一次保存的结果进行分解判断。把格式化后的行保存为新列表,并返回。    """    results = []    count = 1    for line in lines:        format_line = {            'line': count,            'str': line,            'type':'code',   # code, comment, import, var            'inner_code': [],            'mean':''        }        if line.startswith('#'):            format_line['type'] = 'comment'        elif line.startswith('import'):            format_line['type'] = 'import'        elif line.find('=') > 0:            format_line['type'] = 'var'        elif line.startswith('def'):            format_line['type'] = 'function'        # 空行,函数内部代码,变量内部代码,不加入结果        if line.startswith(' ') or line.startswith('}\n'):            # print(results[-1])            if results[-1]['type'] == 'function' or results[-1]['type'] == 'var':                results[-1]['inner_code'].append(line)        elif line.startswith('\n'):            pass  # 空行直接掠过        else:            results.append(format_line)        # 循环下一行        count += 1    return results# 下面开始测试if __name__ == "__main__":    print('*'*50)    print('欢迎使用Python算个球,掐指一算,你的代码内容如下:')    lines = get_lines(filename)    # print(lines[:10])    r = analysis_code(lines)    # print(r)    comment_list = []    function_list = []    for line in r:        # print(line)        if line['type']=='comment':            comment_list.append(line)        elif line['type']=='function':            function_list.append(line)    print(f'- 共{len(comment_list)}个注释')    print(f'- 共{len(function_list)}个函数:')    for f in function_list:        print(f'line:{f["line"]}', f['str'].strip())

如代码所示,我们今天把目标代码进行了分解,根据每一行不同特点从新进行了格式化,转换为包含行号,字符串,类型,含义四部分的字典。这里还可以根据需要扩展不同的格式,方便我们进一步处理。比如解析代码含义,描述运行流程等。

感谢各位的阅读,以上就是“Python怎么计算球的个数”的内容了,经过本文的学习后,相信大家对Python怎么计算球的个数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/howiewang/blog/4452615

AI

开发者交流群×