代码之家  ›  专栏  ›  技术社区  ›  picturesque

我做的计算器代码不像我想象的那样?(Python 3.x)

  •  1
  • picturesque  · 技术社区  · 9 年前

    我试图创建一个(相当)简单的计算器脚本。我想确保用户可以选择要一起计算多少不同的值。为此,我创建了一个while循环。

    uArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    
    def divide():
        uAmount = int(input("How many different values do you want to add together? (max 10) "))
        if uAmount <= 10:
            for amount in range(0, uAmount):
                uArray[amount] = int(input("enter a number: "))
        else:
            print("ERROR\nMax 10 different values supported")
            return 1
    
        global uTotal
        uTotal = 1
        for amount1 in range(0, (uAmount - 1)):
            uTotal /= uArray[amount1]
    
        print("The result is: " + str(uTotal))
    

    我就是不明白为什么我目前的方法不起作用,即使在尝试谷歌搜索之后。

    示例:如果我选择使用两个不同的值。我把这些值设为50和2,当然应该是25。但它给出了0.02。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Sergio Tulentsev    9 年前

    我就是不明白为什么我现在的方法不管用

    uTotal range(0, uAmount - 1) ),整个计算等于:

    1 / 50 # => 0.02
    

    如何修复?

    而不是设置 uTotal公司 将其设置为第一个元素的值。然后使用所有其他元素(第一个元素除外)应用操作(在本例中为除法)。

    total, *rest = uArray
    for operand in rest:
      total /= operand
    
        2
  •  0
  •   David    9 年前

    目前它取1除以你的第一个输入,即50。

    请注意,for循环不会像您所想的那样迭代。需要删除“-1”

    uArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    
    def divide():
        uAmount = int(input("How many different values do you want to add together? (max 10) "))
        if uAmount <= 10:
            for amount in range(0, uAmount):
                uArray[amount] = int(input("enter a number: "))
        else:
            print("ERROR\nMax 10 different values supported")
            return 1
    
        global uTotal
        uTotal = uArray[0]
        for amount1 in range(1, (uAmount)):
            uTotal /= uArray[amount1]
    
        print("The result is: " + str(uTotal))