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

时间:2019-11-03 16:49:02

标签: python levels reward-system

我已经制作了一个(或更多,我正在尝试制作)一个程序来帮助我计算一些数字。 我有一些级别,每个级别都给出奖励,并且给出奖励,我希望不要插入每个数量,而是将它们加起来以获得总计。

我这样做是为了写级别编号,将金额添加到列表中,再次循环,插入其他编号等。

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

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

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)

2 个答案:

答案 0 :(得分:1)

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

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

这是程序的更短版本(工作中),使用简单的查找表代替了=条语句:

if

答案 1 :(得分:0)

您正在使用level==1,其中level是一个字符串,因为input()返回一个字符串,并且您正在将它与int进行比较。

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

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

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

以下是如果块被修改的一个示例:

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

希望有帮助。