如何每隔三倍增加数量?

时间:2019-10-12 01:19:29

标签: python

我不知道如何将金额增加三倍。

第一个月的付款为1美元。

第二个月的付款2美元。 (金额加倍)

第三个月的付款6美元。 (每隔三个月增加三倍)

第4个月的付款12美元。 (金额的两倍)

第五个月的付款36美元。 (每隔三个月翻三倍)

第6个月的付款72美元。 (金额加倍)

第7个月的付款216美元。 (每三个月三倍) 等等...

我正在使用for和if语句。

base = 1
payments = int(input("For how many months did they say you will receive payments? "))


for i in range(0, payments):
  if i % 2 > 0:
    base *= 3 
  else:
    base *= 2 

  month = "Month " + str(i + 1) + ":" + str(base)
  print(month)

第一个月我得到$ 2,我希望得到$ 1

5 个答案:

答案 0 :(得分:2)

您可以使用modulus运算符,并在每个奇数项上将金额加倍。

  base = 1
  payments = 5
  print("Month 1: %s" % base)
  for i in range(2, payments):
    if i % 2 == 1:
      base *= 3
    else:
      base *= 2
  print("Month %s: %s" % (i+1, base))

答案 1 :(得分:0)

您可以使用要乘以的数字列表(2和3),而分期付款少于输入项。逻辑是在条件为true的情况下,在列表的两个数字之间交替:

base = 1
payments = input("For how many months did they say you will receive payments? ")
x = 1
multiplyList = [2, 3]

print(f'Month {x}: $ {base}')

while x <= int(payments):
    i = 0
    for number in multiplyList:
        base = (base * multiplyList[i])
        print(f'Month {x}: $ {base}')
        i = i + 1
        x = x + 1

# output:
# Month 1: $ 1
# Month 1: $ 2
# Month 2: $ 6
# Month 3: $ 12
# Month 4: $ 36
# Month 5: $ 72
# Month 6: $ 216
# Month 7: $ 432
# Month 8: $ 1296
# Month 9: $ 2592
# Month 10: $ 7776

答案 2 :(得分:0)

  

编辑:OP已对问题进行了修改,以纳入新的尝试,并且   更改问题说明,所以已经过时了。

如其他答案中所述,您的方法有一些缺点,使其成为不理想的解决方案。

话虽如此,这是代码出错的地方:

从原始文档的压缩版本开始:

base = 1
payments = 10
for i in range(payments):
  month = "Month " + str(i + 1) + ":" + str(base)
  base *= 2
  if i in range(2, payments, 3):
    base *= 3 
  print(month)

您需要在这里结束:

base = 1
payments = 10
for i in range(payments):
  month = "Month " + str(i + 1) + ":" + str(base)
  if i in range(1, payments, 3):
    base *= 3 
  else:
    base *= 2
  print(month)

所需的更改是:

  • 使用range(2, ...)代替range(1, ...)。这是因为打印和计算方式最终决定了上个月的新基准。
  • *= 2移至else:语句中,以免乘以6

答案 3 :(得分:0)

这有效:

base = 1
payments = int(input("For how many months did they say you will receive payments? "))
month = "Month " + str(1) + ":" + str(base)
print(month)
for i in range(1, payments):
  if i % 2 > 0:
    base *= 2 
  else:
    base *= 3 

  month = "Month " + str(i + 1) + ":" + str(base)
  print(month)

因为您直接进入for循环,这意味着您将第一个月翻了一番。但是,如果您在循环之前打印第一个金额,从两个循环开始,然后交换模语句,那么它就可以工作。

答案 4 :(得分:0)

此解决方案只有一个print()语句可以打印月份和金额,但是它有一个if == 0 in the loop

您可以摆脱循环内的if语句,但必须在循环前再添加一条打印行。

如果您不想打印中间结果,则可以从1开始,获取if i == 0的ird值,并在退出for循环后打印结果。

base = 1
payments = int(input("For how many months did they say you will receive payments? "))


print(base)
for i in range(0, payments):
    if i == 0:
        pass
    elif i % 2 > 0:
        base *= 2
    else:
        base *= 3
    msg = "Month " + str(i + 1) + ":" + str(base)
    print(msg)