在 for 循环中返回多个值?

时间:2021-03-18 10:47:50

标签: python python-3.x function loops

长话短说:

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)

尝试组合一个函数,该函数将循环遍历卡片列表并随机选择一个项目,无论 X 指定多少次,无论插入的数字如何

user_hand.append(draw(x))

它总是只返回 1 张卡片,这让我很困惑。有任何想法吗?以为是函数中的 return ,因为 return 在调用时会结束代码块,但我不确定。

4 个答案:

答案 0 :(得分:1)

这是因为 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

答案 1 :(得分:0)

可能是这样

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

答案 2 :(得分:0)

如果您想在不替换的情况下挑选卡片,random.sample 函数可以满足您的需求。

interface IOnClick{
    fun onClick(model: Model)
}

override fun onClick(model: Model) {
        viewModel.setFormDataOnIdSelection(Model)
        binding.tietName.dismissDropDown()
    }

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
    newView.setOnClickListener {
        iOnClick.onClick(resAllLeadsModel)
    }
}

binding.tietName.setOnItemClickListener { parent, view, position, id ->
    viewModel.setFormDataOnIdSelection(listOfItems[view.tag.toString().toInt()])
}

答案 3 :(得分:0)

  1. 问题在于您传递给 draw() 的值 由于 range 函数会遍历 startend 点,因此传递一个只会返回一个值!
  2. 您还需要添加另一个 list 以附加在 random choices 期间选择的 range()