python中的卡交易

2024-09-30 14:29:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码,可以读取我必须交易的卡和我想要的卡以及它们各自的数量。但是,如果我得到了我想要的所有卡片(数量),我怎么能阅读呢

# The trades
while True:
    trade = input()
    if trade == '---':
      break
    my_card, player_card = trade.split()
    if my_card in wanted_cards:
      if player_card in cards_to_trade:
        print("TRADED!")  
    else:
      print("NOT TRADED!")
      

# See if I have the cards that I wanted:
# ...
print("I GOT EVERY CARD THAT I WANTED!")
# ...
print("I DIDNT GOT EVERY CARD THAT I WANTED!")

可能的投入:

1
CARD01 4
1
CARD02 3
CARD02 CARD01
CARD02 CARD01
CARD03 CARD02
CARD02 CARD01
CARD02 CARD01 #Here I would have 4 CARD02, but I only want 3, so I will accept this trade and then, trade the CARD02
CARD03 CARD02
---

矿井产量(错误):

TRADED!
TRADED!
NOT TRADED!
TRADED!
TRADED!
NOT TRADED!
I GOT EVERY CARD THAT I WANTED! #it prints the two possible outcomes because I don't know how to check which one is right
I DIDNT GOT EVERY CARD THAT I WANTED!

正确输出:

TRADED!
TRADED!
NOT TRADED!
TRADED!
TRADED!
TRADED! #traded because I know have 1 CARD02 more than I wanted, so it becomes a card that I want to trade
I GOT EVERY CARD THAT I WANTED!

Tags: ifthatnotcardcardsprintgottrade
2条回答

为了保存任何东西,您需要保存您接受的交易。 因此,您需要两个列表,一个是您当前的卡,另一个是您想要的卡,用于跟踪当前卡的更改

然后,在最后,你可以检查你是否在你的跟踪列表中得到了你想要的所有卡片

你能数一数每种类型的牌的数量,然后用它来做决定吗

这一行似乎是您需要更新的逻辑。我想你可以用我最初提到的字典来做到这一点。 if my_card in wanted_cards:

如果你想要更多的卡,用一个更复杂的条件来代替它

# setting up your example, if I understand your example.
dict_cardcounts = dict()
dict_desiredcardcounts = dict()
list_cardnames = [f'CARD0{num}' for num in range(1, 4)]
for cardname in list_cardnames:
    dict_cardcounts[cardname] = 0
    # initialize all values to zero then overwrite the non-zero ones.
    dict_desiredcardcounts[cardname] = 0

# TODO: you need to get values into dict_desiredcardcounts

# The trades
while True:
    trade = input()
    if trade == ' -':
      break
    my_card, player_card = trade.split()
    if dict_cardcounts[my_card] < dict_desiredcardcounts[my_card]:
      if player_card in cards_to_trade:
        dict_cardcounts[my_card] += 1

        print("TRADED!")  
    else:
      print("NOT TRADED!")

我最初的答案是在这里,但更符合逻辑的是判断你是否成功,也许这不是你要问的

havealliwant = True
for cardname in dict_cardcounts.keys():
    if dict_cardcounts[cardname] < dict_desiredcardcounts[cardname]:
        havealliwant=False

if havealliwant:
    print("I GOT EVERY CARD THAT I WANTED!")
else:
    print("I DIDNT GOT EVERY CARD THAT I WANTED!")

相关问题 更多 >