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

pois é, eu comecei a ler o livro Python_Fluente_by_Luciano_Ramalho que mostra um código de um baralho no início do livro, ele não usa exatamente esse módulo pra mostrar as cartas mas me desafiei a criar um código pequeno que mostre as cartas de um baralho de uma forma aleatória, no caso embaralhadas que é a tradução de 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.