criando um baralho de cartas em python
import random #biblioteca para ter valores aleatorios e aleatorizar itens em uma lista naipes = ['Ouro', 'Espadas', 'Copas', 'Paus']#lista de naipes numeros = ['Ás', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K']#lista de numeros cartas = [] #deck com todas as 52 cartas for i in range(4):#range define o tamanho ou quantidade de itens a ser usado for u in range(13): cartas.append(str(numeros[u])+" de "+naipes[i]) #append adiciona um valor a uma lista, no caso a lista cartas b = int(input('Qual a quantidade de cartas?\n'))#recebe um valor digitado pelo usuario e joga em uma variavel random.shuffle(cartas)#aleatoriza a ordem das cartas for i in range(b): print(cartas[i])#imprime a carta na posição do contador
Entrei a pouco no TabNews, e estava procurando algum conteúdo em Python. Oh glória. ambém tenho um projetinho que usa o random shuffle
Um detalhe: para pegar uma determinada quantidade de cartas aleatórias, não precisa necessariamente embaralhar tudo, você pode usar a função random.sample
.
E não precisa de range
para percorrer as listas, você pode fazer for elemento in lista
diretamente (assim não precisa ficar mudando o range
quando o tamanho da lista mudar, por exemplo - na verdade é melhor porque nem precisa saber o tamanho da lista). E desde o Python 3.6 é possível usar f-string para construir strings.
Ficaria assim:
import random
naipes = ['Ouros', 'Espadas', 'Copas', 'Paus']
numeros = ['Ás', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K']
cartas = []
for naipe in naipes:
for num in numeros:
cartas.append(f'{num} de {naipe}')
# dê um nome melhor do que "b"
qtd_cartas = int(input('Qual a quantidade de cartas?\n'))
for carta in random.sample(cartas, qtd_cartas):
print(carta)
Claro que se for distribuir as cartas entre os jogadores, aí é melhor embaralhar tudo com shuffle
. Mas se só quer uma amostra aleatória, sample
é mais adequado por manter a lista original intacta e só pegar os elementos aleatoriamente.