我设计了一个代码,它将“数字”作为用户的输入。
该号码将用于制作......
numerator = (3*number) - 2
denominator = (4*n) + 1
。该代码还允许用户选择他们希望此序列继续进行的次数,之后将总计并显示所有分数的总和。
以下是我的代码:
l=int(input("How many times do you repeat this sequence?: "))
n=int(input("Enter a base number: "))
n1=n
n2=n
total=0
s = ''
def calculate(l,n,n1,n2,total,s):
for j in range(l):
s += "{}/{} + ".format(3*n1-2, 4*n2+1)
n1=n+n1
n2=n+n2
total=(((n*3)-2)/((4*n)+1))+total
print(s)
print(total)
calculate(l, n, n1, n2, total, s)
现在这里是我获得此代码的输出时收到的两个错误,例如:
How many times do you repeat this sequence?: 2
Enter a base number: 1
1/5 + 4/9 +
0.4
这两个问题:
4/9
是最后一个分数,有没有办法在最后摆脱“+”加号,因为它只是指向一个空格.. 0.4
这是不正确的,总和应该是1/5 + 4/9 = 0.2 + 0.44 = 0.64
,我不确定在输入上面的总和公式时我误入歧途。任何建议/意见将不胜感激!
答案 0 :(得分:1)
删除+
的一种便宜方法是简单地删除字符串中的最后一个字符:str[:-1]
。
就问题2而言,看起来你想要使用n1和n2而不是n。
截至目前,您已获得1/5(.2)+ 1/5(.2)=。4
答案 1 :(得分:0)
不是连接这样的字符串,而是收集列表中的所有部分,然后加上加号上的项目:
s = []
s.append('{}/{}'.format(1, 5))
s.append('{}/{}'.format(4, 9))
print(' + '.join(s)) # 1/5 + 4/9
我不确定你在做什么,但是如果你想得到你打印的分数的总和,你应该确保以相同的方式计算这些单独的分数。因此,不是在计算总和之前先递增n1
和n2
,而是以与分数输出相同的方式计算总和,然后才更改这些变量:
s.append("{}/{}".format(3 * n1 - 2, 4 * n2 + 1))
total += (3 * n1 - 2) / (4 * n2 + 1)
n1 += n
n2 += n
答案 2 :(得分:0)
我不知道python,但您可以执行以下操作来纠正您的逻辑错误。
如果j = l(暗示最后一部分) 不包括+ 其他 包括+