首页 > 解决方案 > 可以压缩这些多个 if 语句吗?

问题描述

我做了一个简单的程序,它根据看到的牌告诉用户一副牌中还有哪些牌。如果查看代码,您会发现有几个 if 语句几乎做同样的事情。谁能帮我浓缩这些?

for card in cards_seen:
    if card.endswith('C') == True:
        Deck["clubs"].remove(card)
    if card.endswith('D') == True:
        Deck["diamonds"].remove(card)
    if card.endswith('H') == True:
        Deck["hearts"].remove(card)
    if card.endswith('S') == True:
        Deck["spades"].remove(card)

标签: python

解决方案


您可以使用字典来简化代码:

card_suits = {
    'C': 'clubs',
    'D': 'diamonds',
    'H': 'hearts',
    'S': 'spades'
}
for card in cards_seen:
    suit = card_suits[card[-1]]
    Deck[suit].remove(card)

一些备注:

  1. 阅读布尔表达式。你不需要包括== True.
  2. 阅读有关切片的信息。您可以使用text[-1]获取最后一个字符,但话虽如此,.endswith是一种更通用的方法。

推荐阅读