Python循环:1/30+;2/29+;3/28

Python循环:1/30+;2/29+;3/28,python,for-loop,while-loop,fractions,Python,For Loop,While Loop,Fractions,大家好,我有个问题 如何设置要打印的以下代码: 1/30+2/29+3/28………30/1 分子在增加\分母在减少 我有以下资料: for i in range(1,31): v = i for j in range(30,0,-1): t = j print(v/t) 但是指纹 1.0 1.0344827586206897 1.0714285714285714 1.1111111111111112 1.15384615384......... 如何获得1/30+2/

大家好,我有个问题

如何设置要打印的以下代码:

1/30+2/29+3/28………30/1

分子在增加\分母在减少

我有以下资料:

for i in range(1,31):
    v = i
for j in range(30,0,-1):
    t = j
    print(v/t)
但是指纹

1.0
1.0344827586206897
1.0714285714285714
1.1111111111111112
1.15384615384.........
如何获得
1/30+2/29+3/28…..


谢谢你的帮助和指导

您只需要一个循环!分母总是31减去分子

r = 0
for i in range(1,31):
    r += i / (31 - i)
print(r)

你只需要一个循环!分母总是31减去分子

r = 0
for i in range(1,31):
    r += i / (31 - i)
print(r)

这里发生的是,在打印之前,您的数字将被计算为浮点数。由于要打印它们而不进行求值,因此应该将它们插入字符串中。下一行演示如何在不计算变量的情况下将变量插入到输出中:

print "%d/%d" % (v,t)
有关如何格式化打印函数字符串的信息,请参阅

print (" + ".join(["%s/%s"%(num,denom)for num,denom in zip(range(1,31),range(30,0,-1))]))
但是,这仍然会将每个结果放在单独的一行上,因为打印函数会自动插入新行。您可以使用以下循环构建字符串(注意如何将其整齐地打包为一个循环而不是两个循环,因为您可以通过减法获得分母):

这将给你“1/30+2/29+…+30/1+”,但这仍然包括最后一个加号和周围的空格。要解决此问题,请将最后一行更改为

print string[:-3]
这将删除最后的字符


有关如何使用format函数的信息,请参阅。

这里发生的情况是,在打印之前,您的数字将被计算为浮点数。由于要打印它们而不进行求值,因此应该将它们插入字符串中。下一行演示如何在不计算变量的情况下将变量插入到输出中:

print "%d/%d" % (v,t)
print (" + ".join(["%s/%s"%(num,denom)for num,denom in zip(range(1,31),range(30,0,-1))]))
有关如何格式化打印函数字符串的信息,请参阅

print (" + ".join(["%s/%s"%(num,denom)for num,denom in zip(range(1,31),range(30,0,-1))]))
但是,这仍然会将每个结果放在单独的一行上,因为打印函数会自动插入新行。您可以使用以下循环构建字符串(注意如何将其整齐地打包为一个循环而不是两个循环,因为您可以通过减法获得分母):

这将给你“1/30+2/29+…+30/1+”,但这仍然包括最后一个加号和周围的空格。要解决此问题,请将最后一行更改为

print string[:-3]
这将删除最后的字符

有关如何使用格式功能的信息,请参阅

print (" + ".join(["%s/%s"%(num,denom)for num,denom in zip(range(1,31),range(30,0,-1))]))
我想至少

(1,2,3…,30)
(30,29,28…,1)
压缩在一起会产生一个新的元组
((1,30),(2,29),…,(30,1))

然后,将每个分子和分母放入一个字符串,生成一个列表,如,我们使用格式字符串
%s/%s”%numerator,denominator
,虽然使用
%d/%d
更好,但这是另一种情况

[“1/30”、“2/29”、“30/1”]

然后,您只需使用
'+'
作为粘合剂加入此列表

我想至少

(1,2,3…,30)
(30,29,28…,1)
压缩在一起会产生一个新的元组
((1,30),(2,29),…,(30,1))

然后,将每个分子和分母放入一个字符串,生成一个列表,如,我们使用格式字符串
%s/%s”%numerator,denominator
,虽然使用
%d/%d
更好,但这是另一种情况

[“1/30”、“2/29”、“30/1”]


然后您只需使用
'+'
作为粘合剂加入此列表

我想您想要的是字符串而不是数值,对吗

s = ''
for j in range(30, 0, -1):
    s += "{}/{} + ".format(31-j, j)
print s[:-2]
阅读以掌握它。本质上,它格式化字符串,使用两对大括号作为占位符,并在第一个槽中传入值31-j,在第二个槽中传入值j


当然有一种更优雅的方法,但这是一种快速而肮脏的方法。

我想你想要的是字符串而不是数值,对吗

s = ''
for j in range(30, 0, -1):
    s += "{}/{} + ".format(31-j, j)
print s[:-2]
阅读以掌握它。本质上,它格式化字符串,使用两对大括号作为占位符,并在第一个槽中传入值31-j,在第二个槽中传入值j


当然,有一种更优雅的方法可以做到这一点,但这是一种快速而肮脏的方法。

我不确定你到底想做什么,但你只需要一个循环就可以做到。每次通过循环时,分母仅为31减去分子:

from fraction import Fraction
for num in range(1,31):
    den = 31 - num
    fraction_string = "%d/%d" % (num, den)
    fraction_value = Fraction(num, den)
    quotient = num / den
    #... do stuff with whichever of the above you want
当您构建一个结果时——要么添加到一个和,要么追加到一个字符串,或者在每次迭代中输出一些东西——您可以使用列表理解和列表函数更简洁地实现这一点。例如,与此不同的是:

quotientList = []
for n in range(1,31):        
    quotientList.append( n / (31 - n) )
您可以这样做:

quotientList = [ n / (31 - n) for n in range(1,31) ]
 total = sum(someList)
而不是这个:

total = 0
for n in someList:
   total = total + n
您可以这样做:

quotientList = [ n / (31 - n) for n in range(1,31) ]
 total = sum(someList)
把这些概念放在一起,我看到了三种可能的方法:

  • 打印文本字符串
    1/30+2/29+3/28+
    +30/1

    print(“+”.join(“%d/%d”%(n,31-n)表示范围(1,31))内的n)

  • 将其作为算术表达式计算并打印结果:

    打印(范围(1,31)内n的总和(n/(31.0-n))

  • 。。。但是作为分数而不是小数:

    从分数导入分数


    打印(范围(1,31)内n的和(分数(n,31-n)))


  • 我不确定你到底想做什么,但你可以只用一个循环。每次通过循环时,分母仅为31减去分子:

    from fraction import Fraction
    for num in range(1,31):
        den = 31 - num
        fraction_string = "%d/%d" % (num, den)
        fraction_value = Fraction(num, den)
        quotient = num / den
        #... do stuff with whichever of the above you want
    
    当您构建一个结果时——要么添加到一个和,要么追加到一个字符串,或者在每次迭代中输出一些东西——您可以使用列表理解和列表函数更简洁地实现这一点。例如,与此不同的是:

    quotientList = []
    for n in range(1,31):        
        quotientList.append( n / (31 - n) )
    
    您可以这样做:

    quotientList = [ n / (31 - n) for n in range(1,31) ]
    
     total = sum(someList)
    
    而不是