0

This is my code

houses = ['C', 'D', 'H', 'S']
ranks = ['A','2','3','4','5','6','7','8','9','10','J','Q','K']
deck = []

for house in houses:
    for rank in ranks:
        deck.append(f"{rank}-{house}")

for i in range(13):
    print(deck[i], end=",")`

The output is supposed to be:

A-C,2-C,3-C,4-C,5-C,6-C,7-C,8-C,9-C,10-C,J-C,Q-C,K-C

but I got

A-C,2-C,3-C,4-C,5-C,6-C,7-C,8-C,9-C,10-C,J-C,Q-C,K-C,

How do I remove the last comma?

Gino Mempin
  • 25,369
  • 29
  • 96
  • 135
mama b
  • 21
  • 4
  • 3
    Maybe just print(','.join(deck[:13])) – funnydman Oct 30 '22 at 11:58
  • Does this answer your question? [How would you make a comma-separated string from a list of strings?](https://stackoverflow.com/questions/44778/how-would-you-make-a-comma-separated-string-from-a-list-of-strings) – Gino Mempin Oct 30 '22 at 12:05

3 Answers3

0

Here's another alternative

houses = ['C', 'D', 'H', 'S']
ranks = ['A','2','3','4','5','6','7','8','9','10','J','Q','K']
deck = []

for house in houses:
    for rank in ranks:
        deck.append(f"{rank}-{house}")

print(*deck[:13], sep=',')
bn_ln
  • 1,648
  • 1
  • 6
  • 13
  • If your next question is about sorting the cards then [see this answer](https://stackoverflow.com/questions/74231455/how-can-i-arrange-the-output-in-ascending-order-given-a-list/74231948#74231948) – bn_ln Oct 30 '22 at 12:10
0

Might suggest combining str.join and itertools.product as below:

from itertools import product


decks = [
    ','.join(
        '-'.join((rank, house)) for (house, rank) in product(house, ranks)
    )
    for house in houses
]
for deck in decks:
    print(deck)

Output:

A-C,2-C,3-C,4-C,5-C,6-C,7-C,8-C,9-C,10-C,J-C,Q-C,K-C
A-D,2-D,3-D,4-D,5-D,6-D,7-D,8-D,9-D,10-D,J-D,Q-D,K-D
A-H,2-H,3-H,4-H,5-H,6-H,7-H,8-H,9-H,10-H,J-H,Q-H,K-H
A-S,2-S,3-S,4-S,5-S,6-S,7-S,8-S,9-S,10-S,J-S,Q-S,K-S
alphamu
  • 383
  • 1
  • 3
  • 9
0

The only problem is the last part of your code, where you are looping over the deck & printing it.

First of all, it's the best to use len(deck) instead of a constant number.

Lastly just subtract 1 from the amount you are looping & print the last one separately.

So your fixed code would be.

for i in range(len(deck)-1):
  print(deck[i], end=",")

print(deck[-1])