盲拍卖代码只适用于相同数量的数字输入



我的目标是编写代码,允许人们进行盲标,然后在最后显示字典最大值的获胜者。它在相同数字(例如10和50、100和500(的输入范围内完美工作,但决定500对1000是赢家,或者5000对11000是赢家。我不知道为什么它决定越低的值越大。我测试了大量的输入和出价,似乎每次你在输入中添加另一个数字都会出错。


def cls():
os.system('cls' if os.name=='nt' else 'clear')
bid_dict = {}
def winning(): 
while True:
winner = max(bid_dict, key=bid_dict.get)
price = max(bid_dict.values())      
print(f'The winner is {winner} with a bid of ${price}')
print(bid_dict)
break
while True:
name = input("What is your name? ")
bid = input('What is your bid? ')
bid_dict[name] = bid
more = (input("Are there more bidders? ")).lower()
if more == "yes":
cls()
continue
else:
cls()
winning()
默认情况下,input()返回一个字符串。因此,当您使用max()比较这些值时,它会将它们排序为字符串,并返回以最高值开头的字符串(即以最大数字开头的字符串(。

您需要将出价保存为某种数字;intfloat都可以,这取决于您是否希望允许小数位数。这将允许您将它们作为实际数字进行比较。

最新更新