我制作了一个(或更多,我正在尝试制作(程序来帮助我计算一些数字。我有一些等级,每个等级都有奖励,为了奖励,我不想插入每个金额,然后把它们加起来得到总数。
我已经做到了,这样我就可以写等级号,它将金额添加到列表中,它再次循环,我插入一个不同的数字等等。
但它不会循环或将数字添加到列表中。
这是我的超不紧凑代码:
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
是str
,所以它永远不会等于int
。您的if
检查都不会得到满足,这就是为什么您的函数不会递归的原因。在调试中发现这一点的一种方法是在收到输入后添加一个print(repr(level))
;您会看到它是一个类似'1'
(字符串(的值,而不是1
(整数(- 没有
apped()
这样的东西,所以一旦你点击了那一行代码(目前没有发生,因为你的if
检查永远不匹配(,它就会引发一个AttributeError
- 您的
total
永远不会增加,因为您使用的是==
(相等检查(运算符,而不是=
(赋值(运算符
这是该程序的一个更短的(工作(版本,使用一个简单的查找表来代替一堆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)
您使用的是level==1
,其中level是一个字符串,因为input()
返回一个字符串并将其与int进行比较。
您应该尝试level=='1'
或通过level = int(input("->"))
将level转换为int。
此外,列表具有append()
方法,而不是apped()
此外,total==total+1000
对添加没有帮助。它只会检查合计值是否等于合计加1000。您应该使用total = total + 1000
进行增值。
以下是一个修改过的if块示例:
if level=='1':
print('oo') #and here
lists.append('150')
total=total+150
希望能有所帮助。