记录PTA编程题练习7-35 有理数均值——Python3实现

题目描述:

本题要求编写程序,计算N个有理数的平均值。

输入格式:

输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 ...的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。

输出格式:

在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

代码实现:

python 复制代码
from math import gcd
N = int(input())
s = input().split()
fz,fm = [],[]  #分别保存分子分母约分后的结果的列表
maxm ,maxz = 1,0
for f in s:
    z,m = map(eval,f.split("/"))  #提取分子分母
    y = gcd(z,m)  #最大公约数
    z = z//y
    m = m//y
    maxm *= m  #通分后的分母
    fz.append(z)
    fm.append(m)
for i in range(N):  #计算通分后的分子
    z = (maxm//fm[i])*fz[i]
    maxz += z
endz = maxz//gcd(maxz,maxm*N)  #平均值的分子
endm = maxm*N//gcd(maxz,maxm*N)  #平均值的分母
if endz % endm == 0:
    print(endz//endm)
else:
    print("{}/{}".format(endz,endm))
相关推荐
用户83562907805113 分钟前
用 Python 轻松在 Excel 工作表中应用条件格式
后端·python
red1giant_star17 分钟前
Python根据文件后缀统计文件大小、找出文件位置(仿Everything)
后端·python
雷欧力29 分钟前
如何使用 Claude API?3 种接入方案实测,附完整代码(2026)
python·claude
神仙别闹34 分钟前
基于 Python 实现 BERT 的情感分析模型
开发语言·python·bert
NQBJT40 分钟前
VS Code配置Python人工智能开发环境
开发语言·人工智能·vscode·python
浮游本尊42 分钟前
一文讲透巡检链路:采集程序 → 上传数据包 → 后端解析入库 → 分析出报告
python
a1117761 小时前
MonoGS 在 Jetson Orin Nano 上的部署与性能测试
python·开源·torch·cv
偶尔微微一笑1 小时前
智能体四大核心模块揭秘
python
2301_815901972 小时前
SQL如何将多行记录聚合成逗号分隔字符串_GROUP_CONCAT技巧
jvm·数据库·python
西索斯2 小时前
Claude API 报 529 Overloaded 怎么办?3 种方案实测,最后一种最省心
python·claude