如何根据if语句设置Python(全局?)变量值

How to set Python (global?) variable value based on if statement

我正在学习 Python 并编写一个函数,该函数接受用户订阅服务的月数 (months_subscribed) 的数组输入,并据此计算收入。收入为每月 7 美元,3 个月的捆绑折扣为 18 美元。让我们从输入 [3,2] 开始,因此预期总收入 (months_value) 应该是 18 美元 + 14 美元 = 32 美元。我想使用一个循环,这样就可以计算 months_subscribed 即使它有更多的元素,例如 [3,2,18,0].

  1. 目前,当我 运行 这个 months_value 给出的输出是 35,而不是 32。它是 21 + 14 = 35 并且没有考虑捆绑折扣。这是为什么?
  2. 如何固定 months_value 使其包含捆绑折扣,并且 months_value = 35? (我想知道这是否涉及将 months_value 指定为全局变量?)
  3. 为什么 Print 语句 1 和 2 中的第一个值不同? (18, vs 21) 我在 if/else 语句中计算了 months_value 的值,所以我不明白为什么它们在这两个语句之间有所不同。

我的代码如下:

import numpy as np

months_subscribed = [3,2]

def subscription_summary(months_subscribed):

    # 3-month Bundle discount: 3 months for , otherwise  per month
    for j in range(0,len(months_subscribed)):
        if (months_subscribed[j] % 3 == 0):
            months_value = np.multiply(months_subscribed, 6)
        else:
            months_value = np.multiply(months_subscribed,7)
        print(months_value[j]) # Print statement 1: 18 then 14
    print(months_value)        # Print statement 2: [21 14]
    print(sum(months_value))   # Print statement 3: 35. Expected: 18 + 14 = 32

subscription_summary(months_subscribed)

exit()

谢谢!

我是认为列表中的3,2代表不同的月份,决定是否给予折扣。

PS:我也是 python 的新手,但我想我可以提供帮助

months_subscribed = [3,2]
def subscription_summary(months):
         for j in range(0, Len(months)):
               if months_subscribed[j] ℅ 3 == 0:
                    month_value = months_subscribed[j] * 6
                    month_value += 14
              else:
                     month_value = months_subscribed[j] * 7
                     month_value += 14
             print(month_value)


subscription_summary(months_subscribed)

我的同事帮我解决了这个问题。

关键是创建一个空列表来保存订阅的月数,计算收入并使用追加更新该列表中的收入值,以及 return 它们。这很灵活,因为它适用于任何尺寸的列表。它假设 months_subscribed 的计数是非负的。

这就是我们所做的:

months_subscribed = [3,2,0] # Expected Revenue Result: [18, 14, 0]

def new_subscription_summary(months_subscribed):
# Make an empty list to hold each subscription's value
values = []

# Loop over each subscription
for this_sub in months_subscribed:
    # Start with a price of /mo by default
    price = 7
    # But, if the subscription was for a multiple of 3 months, use the promo price of 
    if this_sub % 3 == 0: price = 6
    # Multiply the price per month by the number of months to find the value, and add that to our list
    values.append(price * this_sub)

print(values)
# Add up all the values and return
return sum(values)

new_subscription_summary(months_subscribed)

还有这个 returns:

[18, 14, 0]