2015-03-19 6 views
0
#-*- coding: UTF-8 -*- 
#spade=u"\u2660" 
#heart=u"\u2665" 
#diamond=u"\u2666" 
#clubs=u"\u2663" 
import random 
print 'Welcome to SANDCRAB. This is your deck of cards.' 
seg1='''_________''' 
seg2='''|  |''' 
seg3a="| Ace |" 
seg32="| 2 |" 
seg33="| 3 |" 
seg34="| 4 |" 
seg35="| 5 |" 
seg36="| 6 |" 
seg37="| 7 |" 
seg38="| 8 |" 
seg39="| 9 |" 
seg310="| 10 |" 
seg3jack="| Jack |" 
seg3queen="| Queen |" 
seg3king="| King |" 
seg4='''| of |''' 
seg5s="| Spade |\n|♠♠♠♠♠♠♠|" 
seg5h="| Heart |\n|♥♥♥♥♥♥♥|" 
seg5c="| Clubs |\n|♣♣♣♣♣♣♣|" 
seg5d="|Diamond|\n|♦♦♦♦♦♦♦|" 
seg6='''|  |''' 
seg7='''|_______|''' 
a=[seg3a,seg32,seg33,seg34,seg35,seg36,seg37,seg38,seg39,seg310,seg3jack,seg3queen,seg3king] 
b=[seg5s,seg5h,seg5c,seg5d] 
count=0 
print seg1*13,'\n', 
print seg2*13 
print "".join([random.choice(a)for i in range(13)]) 
print seg4*13 
pr= "\n".join([random.choice(b)for i in range(13)]) 
print pr 
print seg7*13 

Hello. Я пытаюсь создать генератор карт, который генерирует 13 случайных карт. Я получил его, чтобы работать без использования специальных символов, но теперь возникают новые проблемы. Всякий раз, когда я запускаю программу, вещи «seg5» печатаются в столбце, и я не могу заставить их печатать рядом. запятая не работает, и я не уверен, что неправильно использую sys, но это тоже не работает. Благодарю.Картонный генератор игровой печати в колонке, а не в строке

ответ

1

Проблема в том, что вы в том числе символ новой строки в seg5* (seg5s, seg5h, ...)

Самым простым способом исправить было бы сделать эти переменные списки, без перевода строки элемента, а затем распечатать каждую строку отдельно ,

Чтобы сделать это, я первым изменил seg5* на:

seg5s=["| Spade |", "|♠♠♠♠♠♠♠|"] 
seg5h=["| Heart |", "|♥♥♥♥♥♥♥|"] 
seg5c=["| Clubs |", "|♣♣♣♣♣♣♣|"] 
seg5d=["|Diamond|", "|♦♦♦♦♦♦♦|"] 

Затем генерируется список индексов в 0 < = я < = 3, один для каждой карты с:

suit_sels = [random.randint(0,3) for i in range(13)] 

Тогда , если вы хотите их распечатать, вы можете сделать это с помощью:

# Print name 
print "".join([b[i][0] for i in suit_sels]) 
# Print suit symbols 
print "".join([b[i][1] for i in suit_sels]) 

Полный код:

#-*- coding: UTF-8 -*- 
#spade=u"\u2660" 
#heart=u"\u2665" 
#diamond=u"\u2666" 
#clubs=u"\u2663" 
import random 
print 'Welcome to SANDCRAB. This is your deck of cards.' 
seg1='''_________''' 
seg2='''|  |''' 
seg3a="| Ace |" 
seg32="| 2 |" 
seg33="| 3 |" 
seg34="| 4 |" 
seg35="| 5 |" 
seg36="| 6 |" 
seg37="| 7 |" 
seg38="| 8 |" 
seg39="| 9 |" 
seg310="| 10 |" 
seg3jack="| Jack |" 
seg3queen="| Queen |" 
seg3king="| King |" 
seg4='''| of |''' 
seg5s=["| Spade |", "|♠♠♠♠♠♠♠|"] 
seg5h=["| Heart |", "|♥♥♥♥♥♥♥|"] 
seg5c=["| Clubs |", "|♣♣♣♣♣♣♣|"] 
seg5d=["|Diamond|", "|♦♦♦♦♦♦♦|"] 
seg6='''|  |''' 
seg7='''|_______|''' 
a=[seg3a,seg32,seg33,seg34,seg35,seg36,seg37,seg38,seg39,seg310,seg3jack,seg3queen,seg3king] 
b=[seg5s,seg5h,seg5c,seg5d] 
count=0 
print seg1*13,'\n', 
print seg2*13 
print "".join([random.choice(a) for i in range(13)]) 
print seg4*13 
suit_sels = [random.randint(0,3) for i in range(13)] 
# Print name 
print "".join([b[i][0] for i in suit_sels]) 
# Print suit symbols 
print "".join([b[i][1] for i in suit_sels]) 
print seg7*13 

Выход:

 
Welcome to SANDCRAB. This is your deck of cards. 
_____________________________________________________________________________________________________________________ 
|  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  ||  | 
| 5 || 10 || 10 || 9 || 7 || 6 || 6 || Ace || 4 || 7 || 8 || 2 || 10 | 
| of || of || of || of || of || of || of || of || of || of || of || of || of | 
| Clubs || Heart || Heart || Clubs || Heart || Spade || Clubs || Spade || Heart || Clubs || Clubs || Heart ||Diamond| 
|♣♣♣♣♣♣♣||♥♥♥♥♥♥♥||♥♥♥♥♥♥♥||♣♣♣♣♣♣♣||♥♥♥♥♥♥♥||♠♠♠♠♠♠♠||♣♣♣♣♣♣♣||♠♠♠♠♠♠♠||♥♥♥♥♥♥♥||♣♣♣♣♣♣♣||♣♣♣♣♣♣♣||♥♥♥♥♥♥♥||♦♦♦♦♦♦♦| 
|_______||_______||_______||_______||_______||_______||_______||_______||_______||_______||_______||_______||_______| 

Ее стоит отметить, что вы могли бы упростить этот код совсем немного, и сократить число переменных, которые вы использовали при использовании списков и порождающая карта «номер» программно, например:

#-*- coding: UTF-8 -*- 
import random 

NUM_CARDS = 13 
CARD_WIDTH = 8 
SUITS = [('Spades', '♠'), ('Hearts', '♥'), ('Clubs', '♣'), ('Diamonds', '♦')] 
NAMES = {11: 'Jack', 12: 'Queen', 13: 'King', 14: 'Ace'} 

def get_card_name(n): return NAMES.get(n, "%2d" % n) 
def card_row(text=''): return "|" + text.center(CARD_WIDTH) + "|" 

# Generate card output 
cards = [list() for _ in range(7)] 
for _ in range(NUM_CARDS): 
    cv = random.randint(2,14) # Card Value 
    cs = random.randint(0,3) # Card Suit 
    cards[0].append('_' * (CARD_WIDTH+2)) 
    cards[1].append(card_row('')) 
    cards[2].append(card_row(get_card_name(cv))) 
    cards[3].append(card_row('of')) 
    cards[4].append(card_row(SUITS[cs][0])) 
    cards[5].append(card_row(SUITS[cs][1]*(CARD_WIDTH))) 
    cards[6].append(card_row("_" * CARD_WIDTH)) 

# Print card output 
print 'Welcome to SANDCRAB. This is your deck of cards.' 
for lst in cards: 
    print ''.join(lst) 
+0

Большое вам спасибо. Теперь он отлично работает! – Niko