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



我制作了一个(或更多,我正在尝试制作(程序来帮助我计算一些数字。我有一些等级,每个等级都有奖励,为了奖励,我不想插入每个金额,然后把它们加起来得到总数。

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

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

这是我的超不紧凑代码:

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)

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

  1. levelstr,所以它永远不会等于int。您的if检查都不会得到满足,这就是为什么您的函数不会递归的原因。在调试中发现这一点的一种方法是在收到输入后添加一个print(repr(level));您会看到它是一个类似'1'(字符串(的值,而不是1(整数(
  2. 没有apped()这样的东西,所以一旦你点击了那一行代码(目前没有发生,因为你的if检查永远不匹配(,它就会引发一个AttributeError
  3. 您的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

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新