程序不会循环或添加到列表

Program won't loop or add to a list

我制作了(或者更多,我正在尝试制作)一个程序来帮助我计算一些数字。 我有一些级别,每个级别都会提供奖励并给出奖励我宁愿不插入每个金额并将它们全部加起来以获得总数。

我已经这样做了,所以我写了级别编号,它将金额添加到列表中,它再次循环,我插入一个不同的数字等。

但它不会循环将数字添加到列表中。

这是我的超级非紧凑代码:

lists = []
total = 0
def moneyz():
    level=input('-> ')
    print('g') #just a testing bookmark
    print(level) #same here
    if level==1:
        print('oo') #and here
        lists.apped('150')
        total==total+150

    elif level == 2:
        lists.apped('225')
        total==total+225
        moneyz()

    elif level == 3:
        lists.apped('330')
        total==total+330
        moneyz()

    elif level == 4:
        lists.apped('500')
        total==total+500
        moneyz()

    elif level == 5:
        lists.apped('1000')
        total==total+1000
        moneyz()

    elif level == 6:
        lists.apped('1500')
        total==total+1500
        moneyz()

    elif level == 7:
        lists.apped('2250')
        total==total+2250
        moneyz()

    elif level == 8:
        lists.apped('3400')
        total==total+3400
        moneyz()

    elif level == 9:
        lists.apped('5000')
        total==total+5000
        moneyz()

    elif level == 10:
        lists.apped('15000')
        total==total+15000
        moneyz()


moneyz()
print(lists)
print(total)

您正在使用 level==1,其中 level 是一个字符串,而 input() returns 是一个字符串,您正在将它与 int 进行比较。

您应该尝试 level=='1' 或通过 level = int(input("->")) 将 level 转换为 int。

此外,列表有 append() 方法而不是 apped()

此外,total==total+1000 也无助于添加。它只会检查 total 的值是否等于 total 加 1000。您应该使用 total = total + 1000 来添加值。

这里是一个修改过的示例 if 块:

if level=='1':
        print('oo') #and here
        lists.append('150')
        total=total+150

希望对您有所帮助。

我可以看到这段代码中的三个错误:

  1. levelstr,因此它永远不会等于 int。 None 的 if 检查将永远得到满足,这就是为什么您的函数不递归的原因。在调试中发现这一点的一种方法是在收到输入后添加 print(repr(level));您会看到它是一个类似于 '1'(字符串)而不是 1(整数)的值。
  2. 没有 apped() 这样的东西,所以一旦你碰到那行代码(目前没有发生,因为你的 if 检查永远不匹配),它会引发一个 AttributeError.
  3. 您的 total 永远不会增加,因为您使用的是 ==(相等性检查)运算符而不是 =(赋值)运算符。

这是该程序的更短(有效)版本,使用简单的查找 table 代替一堆 if 语句:

# Rewards for levels 0 to 10.
rewards = [0, 150, 225, 330, 500, 1000, 1500, 2250, 3400, 5000, 15000]

# Running totals.
lists = []
total = 0

while True:
    # Get reward level from the user.  If not a valid reward level, stop.
    level = input('-> ')
    try:
        level_num = int(level)
    except ValueError:
        break
    if level_num not in range(len(rewards)):
        break

    # Add the reward to the lists and the total.
    reward = rewards[level_num]
    lists.append(reward)
    total += reward

# Final output.
print(lists)
print(total)