我尝试将 str 转换为 int,但仍然无法获得比较所需的数字

我尝试将 str 转换为 int, 但我仍然无法得到我需要比较的数字。

我指的是第一个函数 - highest_bid()

    old_player = bidder_list["Bid"]

完整代码:

from replit import clear
bidder_list = []

bidding_finished = True

def highest_bid(bidder_list):
  for bidder in bidder_list:
    new_player = 0
    old_player = bidder_list["Bid"]
    old_player = int(old_player)
    if new_player < old_player:
      new_player = old_player
    
  print(bidder_list)
  print(new_player)

while bidding_finished: 
  bidder = input("What is your name? \n")
  bid = input("How much are you willing to pay?  \n$")
  continue_bid = input("Are you the last bidder? Yes or No? \n").lower()

  def auction(bidder,bid): 
    bidder_list.append({"Bidder": bidder,"Bid": bid})  

  auction(bidder = bidder,bid = bid) 
  
  clear()

  if continue_bid == "No" or continue_bid == "n":
     bidding_finished = False
     highest_bid(bidder_list)
     print(bidder_list)
     print("Bidding Finished! The Winner will always be Percy.")
pll0712 回答:我尝试将 str 转换为 int,但仍然无法获得比较所需的数字

你有没有试过改变

auction(bidder = bidder,bid = bid) 

成为

auction(bidder = bidder,bid = int(bid)) 
,

您必须将 continue_bid == "No" 更改为 continue_bid == "no",因为您将输入全部转换为小写。

当您在这里将 old_player 转换为整数时:

old_player = bidder_list["Bid"]
old_player = int(old_player)

没问题。

然而,

def auction(bidder,bid): 
bidder_list.append({"Bidder": bidder,"Bid": bid})

在这里,您正在创建一个包含字典的列表。你不能通过这样做来索引列表

old_player = bidder_list["Bid"]

您需要取消引用列表,然后转到字典,例如:

old_player = bidder_list[0]["Bid"]

由于您将整个bidder_list 作为每个索引的bidder 进行迭代,

你可以这样做:

def highest_bid(bidder_list):
  for bidder in bidder_list:
    new_player = 0
    old_player = bidder["Bid"]
    old_player = int(old_player)
    print(f'value: {old_player}  type: {type(old_player)}')
    if new_player < old_player:
      new_player = old_player
    
  print(bidder_list)
  print(new_player)
本文链接:https://www.f2er.com/8076.html

大家都在问