我一直收到错误的消息。。。我的代码出了什么问题?感谢
我试过转换数据类型,但就是不起作用。TypeError:列表索引必须是整数或切片,而不是字典????
控制台一直在向我展示:
Traceback (most recent call last):
File "main.py", line 35, in <module>
the_winnner_goes_to()
File "main.py", line 17, in the_winnner_goes_to
winner_bid_test = int(bidder_list[x]["bidder_offer"])
TypeError: list indices must be integers or slices, not dict
代码在这里:
from replit import clear
#HINT: You can call clear() to clear the output in the console.
from art import logo
print(logo)
print("Welcome to the secret auction program.")
bidder_list = []
def add_new_bidder(bidder_name, bidder_offer):
bidders_list = {}
bidders_list["bidder_name"] = bidder_name
bidders_list["bidder_offer"] = bidder_offer
bidder_list.append(bidders_list)
def the_winnner_goes_to():
winner_bid = 0
for x in bidder_list:
winner_bid_test = int(bidder_list[x]["bidder_offer"])
if winner_bid_test > winner_bid:
winner_bid = winner_bid_test
winner_bid = int(bidder_list[x]["bidder_offer"])
print(winner_bid)
bid_is_on = True
while bid_is_on:
bidder_name = str(input("What is your name: n"))
bidder_offer = int(input("What's your bid:n $"))
other_bidders = input("Are there any other bidders? Type 'Yes' or 'No': n").lower()
if other_bidders == "yes":
add_new_bidder(bidder_name, bidder_offer)
clear()
else:
add_new_bidder(bidder_name, bidder_offer)
bid_is_on = False
the_winnner_goes_to()
print(bidder_list)
您的bidders_list
是一个dict列表。
所以它就像
bidders_list = [
{
"bidder_name" : xxx,
"bidder_offer" : yyy
},
{
"bidder_name" : xxx,
"bidder_offer" : yyy
},
.
.
.
]
所以你正在努力做到这一点,
for x in bidder_list:
.. bidder_list[x]["bidder_offer"] ..
这是错误的,所以你应该
for x in bidder_list:
.. x["bidder_offer"] ..
因为x
是dict
如果要运行bidder_list[x]["bidder_offer"]
for x in range(len(bidders_list)):
.. bidder_list[x]["bidder_offer"] ..