循环的Python问题

时间:2015-03-08 19:13:31

标签: python loops

我设计了一个代码,它将“数字”作为用户的输入。

该号码将用于制作......

  1. numerator = (3*number) - 2
  2. 和分母,将是denominator = (4*n) + 1
  3. 该代码还允许用户选择他们希望此序列继续进行的次数,之后将总计并显示所有分数的总和。

    以下是我的代码:

    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
    

    这两个问题:

    1. 由于4/9是最后一个分数,有没有办法在最后摆脱“+”加号,因为它只是指向一个空格..
    2. 两个分数的总和显示为0.4这是不正确的,总和应该是1/5 + 4/9 = 0.2 + 0.44 = 0.64,我不确定在输入上面的总和公式时我误入歧途。
    3. 任何建议/意见将不胜感激!

3 个答案:

答案 0 :(得分:1)

删除+的一种便宜方法是简单地删除字符串中的最后一个字符:str[:-1]

就问题2而言,看起来你想要使用n1和n2而不是n。

截至目前,您已获得1/5(.2)+ 1/5(.2)=。4

答案 1 :(得分:0)

  1. 不是连接这样的字符串,而是收集列表中的所有部分,然后加上加号上的项目:

    s = []
    s.append('{}/{}'.format(1, 5))
    s.append('{}/{}'.format(4, 9))
    print(' + '.join(s)) # 1/5 + 4/9
    
  2. 我不确定你在做什么,但是如果你想得到你打印的分数的总和,你应该确保以相同的方式计算这些单独的分数。因此,不是在计算总和之前先递增n1n2,而是以与分数输出相同的方式计算总和,然后才更改这些变量:

    s.append("{}/{}".format(3 * n1 - 2, 4 * n2 + 1))
    total += (3 * n1 - 2) / (4 * n2 + 1)
    n1 += n
    n2 += n
    

答案 2 :(得分:0)

我不知道python,但您可以执行以下操作来纠正您的逻辑错误。

  1. 删除' +'最后,你可以做类似下面的事情,
  2. 如果j = l(暗示最后一部分)     不包括+ 其他   包括+

    1. 在计算总数时,您正在使用' n'始终作为输入值的值 总=(((N * 3)-2)/((4 * N)+1))+总 这里使用n1或n2 总=(((N1 * 3)-2)/((4 * N 2)+1))+总