{'sm': ['q', 0.25, 1000], 'Bug Out Bag': ['q', 0.25, 100000000]}
计算总金额,这是我的代码:
single_or_all_total = input('\nDo you want 1 bag or all the bags? (type: 1 for 1 bag, 2 for all bags)\n')
#calculate for a single bag
if int(single_or_all_total) == 1:
single_bag_total = input('\nWhich bag? (e.g. type: small for the "small" bag)\n')
if single_bag_total in coins_in_the_bag:
total = coins_in_the_bag[single_bag_total][1] * coins_in_the_bag[single_bag_total][2]
print('The total for bag {} was {}'.format(single_bag_total, total))
#print(total)
elif single_bag_total not in coins_in_the_bag:
print('Sorry, this was not a valid bag. Please re-run file.')
else:
print('An error occurred, please re-run script.')
#calculate total for all bags
elif single_or_all_total == 2:
total=0
single_bag_total=0
for coin in coins_in_the_bag:
total += coins_in_the_bag[single_bag_total][1] * coins_in_the_bag[single_bag_total][2]
print(total)
问题是,当我运行它时,它什么都不返回。
我可以让我的代码点击if int(single_or_all_total) == 1:
,但是如果我输入2
它根本不会崩溃,它就不会返回任何内容。
我只是尝试遍历coins_in_the_bag
,同时将value
添加到total
var:
( coins_in_the_bag[single_bag_total][1] * coins_in_the_bag[single_bag_total][2] )
但它没有输出任何内容。
我在这里做错了什么?
更新错误
total += coins_in_the_bag[single_bag_total][1] * coins_in_the_bag[single_bag
_total][2]
UnboundLocalError: local variable 'total' referenced before assignment
答案 0 :(得分:2)
你从未碰到你怀疑的循环。
通过使用print
作为函数(以及single_or_all_total
的转换),我将推断您使用的是Python 3。
然后,input
返回一个简单的字符串,就像Python 2中的raw_input
一样。
您将int(single_or_all_total)
与1
进行比较(这很好,有效),然后single_or_all_total
与2
进行比较。请注意,第二个版本错过了转换为数字 - single_or_all_total
中的字符串永远不会等于2
,只有"2"
。
相反,请尝试elif int(single_or_all_total) == 2
或elif single_or_all_total == "2"