Python怎么计算球的个数
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要讲解了"Python怎么计算球的个数",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python怎么计算球的个数"吧!代码如下:# auth
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
网络安全密码分类有哪些
崇义天气预报软件开发
去平凉哪个服务器做核酸
用友数据库如何打开
数据库数据字典
万象网管 数据库
南昌北斗校时服务器
力拓网络技术
我国网络安全领导小组
字节跳动服务器安全
先进的网络技术和信息传播渠道
通辽网络安全宣传
江苏语音网络技术服务工程
中国服务器安全
网络安全电子产品
信息网网络安全法律法规
简单的数据库
软件测试开发与软件开发
怎么打开云服务器
网络安全团课朗读内容
线美科技互联网
qq无法连接到服务器
天涯明月刀如何清理数据库
易语言数据库路径怎么写
戒毒系统网络安全体系
七日杀开放之后怎么找服务器
三菱J2服务器手动试转
酒店的免费网络安全吗
君临天下小说软件开发
speedtest测速服务器地址