我不知道如何将金额增加三倍。
第一个月的付款为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
答案 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)