Python Higher or Lower纸牌游戏:牌组不完整、play()部分代码未执行问题
问题修复方案
问题1:牌组仅生成Spades一种花色
- 问题原因:
Deck类的build()方法中return self语句缩进错误,当前处于花色遍历的第一层循环内部,代码遍历完第一种花色(Spades)就直接返回结果,不会执行后续三种花色的生成逻辑。 - 修复方法:调整
return self的缩进层级,移到外层花色遍历循环的外部,确保所有花色生成完成后再返回实例。
修改后build()方法代码如下:
def build(self): self.cards = [] for s in ["Spades", "Clubs", "Diamonds", "Hearts"]: for v in range(1, 14): self.cards.append(Card(s, v)) # 缩进调整到和for s循环同级,所有花色生成完成后再返回 return self
问题2:打印电脑猜测语句后代码不执行
- 问题原因:内层校验用户输入的
while answer not in "hl"循环中,从未对answer变量赋值,answer始终是初始值"?",导致内层进入无限死循环,永远无法跳出执行后续抽牌、计分逻辑。 - 修复方法:在获取到用户输入的合法猜测值后,给
answer变量赋值,输入合法即可跳出内层循环。同时原输入语句中多余的format()调用也可一并删除(字符串没有对应占位符,该调用无实际作用)。
修改后内层循环代码如下:
while answer not in "hl": Player_guess = str(input("What is your guess: higher or lower (h or l)?\n")).lower() # 新增判断:用户输入合法则给answer赋值,用于跳出循环 if Player_guess in ["h", "l"]: answer = Player_guess Computer_guess = random.choice(Higher_or_lower) print("You guess " + str(Player_guess)) print("The computer guess " + str(Computer_guess))
内容的提问来源于stack exchange,提问作者Kentta
相关产品推荐
相关产品推荐

