这是Python 3.如果用户在池中剩余0分,并从键值中取出点并将它们添加回池中,则程序会中断。这让我感到困惑,因为此时泳池> 0和第一个while循环应该启动,但它没有。任何人都可以提供任何解释为什么?
PS-一般代码批评也赞赏。新的。pool = 30
attr = {'Strength' : 0, 'Health' : 0, 'Wisdom' : 0, 'Dexterity' : 0}
while pool > 0:
print('\t\t Time to spend some points! You have', pool, 'to spend')
spend = input('Where would you like to spend your points?')
if spend in attr:
amount = int(input('How many points would you like to spend?'))
if amount > pool:
print('You do not have that many points! You have', pool, 'points!')
else:
attr[spend] = amount
pool -= amount
print(attr)
else:
print('Not a valid input. Please correct.')
print('\t\t You have no more points! Add some to the pool!')
while pool == 0:
confirm = input('Would you like to add points back into the pool?')
if confirm == 'y':
take = input('Where would you like to take points from?')
if take in attr:
number = int(input('How many points would you like to take?'))
if attr[take] >= number:
pool += number
attr[take] -= number
print ('There are now', pool, 'points remaining')
elif attr[take] < number:
print('You dont have enough points to do that! You have', attr[take], 'points in', take)
else:
print('Please make a valid selection.')
elif confirm == 'n':
print('Goodbye!')
break
答案 0 :(得分:2)
一旦他们添加回池中,你就没有循环让你回到第一个while
循环。
最简单的解决方法是将print
和关联的pool == 0
循环放在另一个循环中。
答案 1 :(得分:1)
第一个循环结束后,即pool==0
,代码无法返回第一个循环。
试试这个:
while pool >= 0:
if pool>0:
print('\t\t Time to spend some points! You have', pool, 'to spend')
spend = input('Where would you like to spend your points?')
if spend in attr:
amount = int(input('How many points would you like to spend?'))
if amount > pool:
print('You do not have that many points! You have', pool, 'points!')
else:
attr[spend] = amount
pool -= amount
print(attr)
else:
print('Not a valid input. Please correct.')
if pool == 0:
print('\t\t You have no more points! Add some to the pool!')
confirm = input('Would you like to add points back into the pool?')
if confirm == 'y':
take = input('Where would you like to take points from?')
if take in attr:
number = int(input('How many points would you like to take?'))
if attr[take] >= number:
pool += number
attr[take] -= number
print ('There are now', pool, 'points remaining')
elif attr[take] < number:
print('You dont have enough points to do that! You have', attr[take], 'points in', take)
else:
print('Please make a valid selection.')
elif confirm == 'n':
print('Goodbye!')
break