我已经制作了一个(或更多,我正在尝试制作)一个程序来帮助我计算一些数字。 我有一些级别,每个级别都给出奖励,并且给出奖励,我希望不要插入每个数量,而是将它们加起来以获得总计。
我这样做是为了写级别编号,将金额添加到列表中,再次循环,插入其他编号等。
但是它不会循环或将数字添加到列表中。
这里是我的超级紧凑代码:
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)
答案 0 :(得分:1)
我可以在这段代码中看到三个错误:
level
是str
,因此它永远不会等于int
。您的if
检查都将无法满足,这就是为什么您的函数无法递归的原因。在调试中发现此问题的一种方法是在收到输入后添加一个print(repr(level))
。您会看到它是一个像'1'
(一个字符串)而不是1
(一个整数)的值。apped()
这样的东西,所以一旦您碰到了这行代码(由于if
的支票永远不匹配,目前就不会发生),它将引发{{1 }}。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
希望有帮助。