Python函数deal_card仅返回1个随机值,如何修改使其返回2个?
问题分析
你的代码有两个核心问题导致只返回1个值:
deal_card()函数里的for循环执行2次,但每次循环都会覆盖pick变量,最后仅返回最后一次循环选中的卡片,所以函数本质上只返回单个值。- 外部调用时用
user_cards.append(deal_card()),只会把函数返回的单个值添加到列表里,自然只有1个元素。
修正方案
方案1:让函数直接返回包含2个随机卡片的列表
调整函数逻辑,生成两个随机卡片并打包成列表返回,外部直接赋值即可:
import random def deal_card(): cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10] # 用列表推导式生成2个随机卡片,random.choice可直接选元素,无需手动计算索引 return [random.choice(cards) for _ in range(2)] user_cards = deal_card() print(user_cards)
方案2:保持函数返回单个卡片,调用两次append
如果想保留原函数返回单个卡片的逻辑,需要调用两次函数并分别添加到列表:
import random def deal_card(): cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10] pick = random.randint(0, len(cards)-1) return cards[pick] user_cards = [] # 调用两次函数,每次添加一个卡片 user_cards.append(deal_card()) user_cards.append(deal_card()) print(user_cards)
额外优化提示
原代码里每次循环都重新定义cards列表完全没必要,把它放到循环外面能提升效率;用random.choice(cards)替代手动计算索引的写法,代码会更简洁易读。
内容的提问来源于stack exchange,提问作者Wally Tan
相关产品推荐
相关产品推荐

