python - 可以压缩这些多个 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)
解决方案
您可以使用字典来简化代码:
card_suits = {
'C': 'clubs',
'D': 'diamonds',
'H': 'hearts',
'S': 'spades'
}
for card in cards_seen:
suit = card_suits[card[-1]]
Deck[suit].remove(card)
一些备注:
- 阅读布尔表达式。你不需要包括
== True
. - 阅读有关切片的信息。您可以使用
text[-1]
获取最后一个字符,但话虽如此,.endswith
是一种更通用的方法。
推荐阅读
- google-apps-script - Gmail插件中的多行TextInput高度
- ruby-on-rails - capistrano + rails 5:服务器以生产模式启动而不是登台
- java - 如何从 .java 文件制作双击程序?
- ios - 在函数之外访问和保存时间戳
- api - 清除 API 错误 [UWP]
- python - 仅针对一个子类的 Python unittest 跳过测试
- oauth - 针对 Web Api 和 Mvc .NET 4 应用程序授权范围的正确方法
- python - matplotlib 3:带有tight_layout 的3D 散点图
- ansible - 将整数变量传递给任务而不丢失整数类型
- r - 基于部分匹配列的子集 df