Python嵌套if实现纸牌游戏:作业问题求助
解决方案
你的代码已经完成了点数的判断,但缺少花色识别和结果整合输出。根据作业规则,我们可以通过区间判断点数+模运算判断花色的方式,把if总数控制在13个以内,同时满足所有要求:
思路说明
- 点数部分:将连续4个编号对应同一个点数,用
>=和<=的区间判断替代多个or,并用elif链减少冗余判断,总共只需要9个判断(1个if+ 8个elif)。 - 花色部分:每个点数的4个编号对应4种花色,通过
num % 4的结果直接映射花色,仅需3个判断(1个if+ 2个elif),加上点数的9个,总if数为12,远低于13的上限。 - 最后整合点数和花色,输出要求的纸牌名称、花色、点数。
完整代码
num = int(input('Enter a number: ')) # 确定点数 rank = "" if num >= 0 and num <= 3: rank = "6" elif num >= 4 and num <= 7: rank = "7" elif num >= 8 and num <= 11: rank = "8" elif num >= 12 and num <= 15: rank = "9" elif num >= 16 and num <= 19: rank = "10" elif num >= 20 and num <= 23: rank = "vale" elif num >= 24 and num <= 27: rank = "queen" elif num >= 28 and num <= 31: rank = "king" elif num >= 32 and num <= 35: rank = "tus" # 确定花色 suit = "" if num % 4 == 0: suit = "梅花" elif num % 4 == 1: suit = "方块" elif num % 4 == 2: suit = "红桃" else: suit = "黑桃" # 输出结果 card_name = f"{rank} of {suit}" print(f"纸牌名称: {card_name}") print(f"花色: {suit}") print(f"点数: {rank}")
规则符合验证
- 仅使用了
if/elif和算术/比较运算符,无while或自定义函数。 - 总if关键字数量为12,未超过13的上限。
- 没有使用36个独立if,通过区间和模运算大幅减少判断次数。
内容的提问来源于stack exchange,提问作者Love
相关产品推荐
相关产品推荐

