我现在正在积极学习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问题啊哈哈)
答案 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))