Python怎么计算球的个数
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,这篇文章主要讲解了"Python怎么计算球的个数",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python怎么计算球的个数"吧!代码如下:# auth
千家信息网最后更新 2025年01月25日Python怎么计算球的个数
这篇文章主要讲解了"Python怎么计算球的个数",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python怎么计算球的个数"吧!
代码如下:
# author: DE8UG
# 创建垃圾桶和垃圾
# 规则:k:v,一个k对应一个v,代码表示用冒号分割
# 输入
# 判断
# 保存
# 函数
# 综合
import json
rule = {
"湿垃圾": ["菜叶", "橙皮", "葱", "饼干"],
"干垃圾": ["旧浴缸", "盆子", "海绵", "卫生纸"]
}
# print('加载文件:', ljt_gan)
def load_data(filename):
with open(filename) as f:
data = json.load(f)
return data
def 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怎么计算球的个数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
垃圾
代码
函数
文件
垃圾桶
格式
个数
不同
一行
内容
输入
变量
含义
字符
字符串
注释
目标
类型
结果
部分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
微互联网科技有限公司招聘
梦幻西游三维2022新服务器
学软件开发学习什么基础知识
ob数据库适合小微企业吗
广东h5软件开发公司
网络安全宣传周微课征集活动
moxa 串口服务器
海南通用软件开发现价
数据库连接池技巧
网络安全有效
无锡信息软件开发销售
基础数据数据库设计
瑞婷网络技术合肥地址
网络安全和发展
openvpn服务器安装
u8装完数据库 显示不符
宿迁海航软件开发推荐咨询
广州软件开发价钱
太原互联网科技
软件开发一般工资多少可以跳槽
ibm服务器怎么查看ride组
日照医疗器械数据库
信息操作题网络技术运用
井陉新闻网络安全应急演练
c 从子类里面取数据库
ios数据库版本更新失败
多规合一数据库建设
毕节定制软件开发
数据库时间转换
马士兵网络安全课程值得买吗