簡體   English   中英

在for循環中返回多個值?

[英]Returning multiple values in a for loop?

長話短說:

import random

cards = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
user_hand = []
computer_hand = []

def draw(x):
  for c in range(0, x):
    card = random.choice(cards)
  return card

user_hand.append(draw(1))
    
print(user_hand)

嘗試將 function 放在一起,這將循環遍歷卡片列表並選擇一個隨機項目,無論 X 指定多少次,但無論插入的數字如何

user_hand.append(draw(x))

它總是只返回一張卡,非常難過。 有任何想法嗎? 認為這是 function 中的返回,因為返回在調用時結束了一個代碼塊,但我不確定。

這是因為card在每次迭代中都會被覆蓋,而您只返回最后一個值。

您可以創建一個列表並返回該列表:

def draw(x):
  random_cards = []
  for c in range(0, x):
    card = random.choice(cards)
    random_cards.append(card)
  return random_cards

user_hand.extend(draw(1))  # further you'll need extend here else it will create a list of lists

可能是這樣

def draw(x):
  result=[] 
  for c in range(0, x):
     card = random.choice(cards)
     result.append(card) 
return result

如果您想選擇無需更換的卡片, random.sample function 可以滿足您的需求。

def draw(x):
  return random.sample(cards, x)

user_hand.extend(draw(3))
  1. 問題在於您傳遞給draw()的值,因為range function 迭代startend ,因此傳遞一個只會返回一個值!
  2. 您還需要將另一個list添加到 append 在range()期間選擇的random choices

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM