我制作的计算器代码并不像我想的那样行事? (Python 3.x)

时间:2017-09-14 11:18:48

标签: arrays python-3.x for-loop calculator

我现在正在积极学习Python。我已经有了一些代码经验,但还不够,我称之为一个好的程序员(甚至是一个称职的人)。

我试图创建一个(漂亮的)简单的计算器脚本。我想确保用户可以选择他想要一起计算多少个不同的值。为此,我创建了一个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))

我知道这段代码对你来说可能看起来很丑陋,而且我确信如果我知道的话,同样的过程可以更方便,更简单地完成。

我无法弄清楚为什么我当前的方法无法正常工作,即使在尝试谷歌之后也是如此。

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

提前感谢愿意提供帮助的任何人! (对不起,如果这是一个noob问题啊哈哈)

2 个答案:

答案 0 :(得分:2)

  

我无法弄清楚为什么我目前的方法不起作用

简单。您从uTotal开始等于1.然后除以每个数字(除了最后一个)。由于您只有两个数字,50和2,并且您不使用第二个数字(由于range(0, uAmount - 1)),因此整个计算等于:

1 / 50 # => 0.02

如何解决?

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

数组解包语法可能会派上用场:

total, *rest = uArray
for operand in rest:
  total /= operand

答案 1 :(得分:0)

目前它取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))