Redian新闻
>
这个给分数求和的Python程序为嘛陷入死循环出不来?大牛给帮忙看看。
avatar
这个给分数求和的Python程序为嘛陷入死循环出不来?大牛给帮忙看看。# Programming - 葵花宝典
t*6
1
avatar
m*u
3
def sum_of_fraction(N, D):

sum = []

sum.append (N[0])
sum.append (D[0])
for i in range(1, len(N)):
sum[0] = sum[0] * D[i] + sum[1] * N[i]
sum[1] = sum[1] * D[i]
m = min(sum)
for j in range(2,m):
if sum[0] % j ==0 and sum[1] % j == 0:
sum[0] = sum[0] / j
sum[1] = sum[1] / j
return sum
N = [2, 3, 56, 43, 23, 5, 6, 94, 27, 54]
D = [43, 23, 45, 45, 56 ,38, 102, 45, 21, 76]
print(sum_of_fraction(N,D))
N = [1, 1, 1, 1]
D = [4, 4, 4, 4]
print(sum_of_fraction)
数组N和D分别用来存放分数的分子和分母。数组sum用来存放求和结果,它有两个元素
,一个是和的分子(sum0),另一个是何的分母(sum)。每次求和之后立马约分化简
avatar
y*i
4
音箱都是需要的吗?

【在 A******1 的大作中提到】
: http://www.musiciansfriend.com/amplifiers-effects/fender-mustan
: 选style,选red
: 原价330,现在红的只要250。
: 如果不介意红色的话,应该算不错的deal
: 声音也不错,功能很齐全。
: 适合初学电琴的朋友。

avatar
X*r
5
你约分那个循环不对,不能约成最简,加几次后m就大得不行,算不动了。应该直接拿
辗转相除法求最大公约数约分。

【在 m******u 的大作中提到】
: def sum_of_fraction(N, D):
:
: sum = []
:
: sum.append (N[0])
: sum.append (D[0])
: for i in range(1, len(N)):
: sum[0] = sum[0] * D[i] + sum[1] * N[i]
: sum[1] = sum[1] * D[i]
: m = min(sum)

avatar
A*1
6
Never mind. Sold out already.
avatar
m*u
7
实际上这个循环似乎没有运行,是咋回事?
如果我用简单数字为例,不会太复杂,不应该出现死机现象。最后算出来,怎么是不约
分化简的分数。
avatar
m*u
8
而且结果还是错的。
尼玛,1/5+2/6+3/7+4/8 = 614/420!?
avatar
X*r
9
就是没有约分嘛,不是跟你说了你约分那个循环不对吗,比如要是可以被四约你就只会
除以二,你应该用辗转相除法求最大公约数既对又快。

【在 m******u 的大作中提到】
: 而且结果还是错的。
: 尼玛,1/5+2/6+3/7+4/8 = 614/420!?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。