【问题标题】:I tried to convert str into an int, but I still can't get the number I need for comparison我试图将 str 转换为 int,但我仍然无法获得比较所需的数字
【发布时间】:2021-10-06 06:24:43
【问题描述】:

我尝试将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.")

【问题讨论】:

  • bidder_list 是一个列表。你不能用一个字符串来索引它(在你的例子中是“Bid”)
  • 谢谢!我对 Python 以及有关计算机语言的一切都很陌生...

标签: python list dictionary types


【解决方案1】:

你有没有尝试过改变

auction(bidder = bidder, bid = bid) 

成为

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

【讨论】:

    【解决方案2】:

    您必须将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 作为每个索引的投标人进行迭代,

    你可以这样做:

    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)
    

    【讨论】:

      猜你喜欢
      • 2017-06-30
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2020-04-23
      • 1970-01-01
      • 2020-02-16
      • 2017-07-08
      相关资源
      最近更新 更多