python中如何计算个数(python怎么求球的体积)

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

本文主要讲解“Python如何计算球数”,简单明了,易学易懂。接下来,请跟随边肖的思路,一起学习学习《Python如何计算球数》!

代码如下:

# author: DE8UG

#制造垃圾桶和垃圾

#规则:k:v,一个K对应一个V,代码表示用冒号除。

#输入

#判断

#保存

#函数

#全面

导入json

规则={ 0

湿垃圾' : ['菜叶','橘皮','葱','饼干'],

干垃圾' : ['老浴缸','面盆','海绵','卫生纸']

}

# print('加载文件:',ljt_gan)

def load_data(文件名):

打开(文件名)为f:

data=json.load(f)

返回数据

def reng_laji(rule_k,laji,ljt):

if rule_k==ljt['name']:

ljt['数据']。追加(laji)

def fenlei(laji,rule,ljt):

对于规则. items()中的k,v,

打印(k,v)

如果v:中的laji

打印('发现垃圾:',laji,k)

reng_laji(k,laji,ljt)

# reng_laji(k,laji,ljt_shi)

#封装用函数编写文件的代码

def save_to_file(文件名,数据):

以f:打开(文件名为“w”)

json.dump(数据,f)

def main():

#定义垃圾桶

ljt _ shi={

名称' : '湿垃圾',

数据' : []

}

ljt _ gan={

名称' : '干垃圾',

数据' : []

}

#加载现有垃圾

ljt_gan=load_data('gan.json ')

ljt_shi=load_data('shi.json ')

打印('加载文件:',ljt_gan,ljt_shi)

#扔垃圾

Laji=输入('输入要抛出的垃圾:')

打印('垃圾:',laji)

#分类

fenlei(laji,rule,ljt_gan)

fenlei(laji,rule,ljt_s

hi)

   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怎么计算球的个数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/150548.html

(0)

相关推荐

  • 如何连接Flex数据库行

    技术如何连接Flex数据库行这篇文章主要介绍如何连接Flex数据库行,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Flex应用程序并不直接与一个Flex数据库进行连接,所以你需要使用某种类型的服务

    攻略 2021年12月9日
  • 简述namenode工作机制(namenode的重要性是什么)

    技术Namenode HA 知识点有哪些这篇文章主要介绍“Namenode HA 知识点有哪些”,在日常操作中,相信很多人在Namenode HA 知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法

    攻略 2021年12月23日
  • 传输层协议与路由器

    技术传输层协议与路由器 传输层协议与路由器1、 TCP协议:
    面向连接的,可靠的进程到进程通信的协议
    TCP提供全双工服务
    2、UDP协议:
    无连接的不可靠的协议
    效率高
    3、TCP报文段U R G :

    礼包 2021年12月2日
  • 如何在原有的框架中集成shiro

    技术如何在原有的框架中集成shiro今天就跟大家聊聊有关如何在原有的框架中集成shiro,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。今天的任务是在原有的框架中集

    攻略 2021年10月19日
  • openwrt设置远程管理(openwrt模式怎么设置)

    技术OpenWRT如何启用工作模式开关和联网小编给大家分享一下OpenWRT如何启用工作模式开关和联网,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 主要配置 rc.local 脚本,内容如下:r

    攻略 2021年12月18日
  • css样式的继承性、层叠性 、优先级有什么作用

    技术css样式的继承性、层叠性 、优先级有什么作用这篇文章主要讲解了“css样式的继承性、层叠性 、优先级有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css样

    攻略 2021年12月10日