2010-10-29 3 views
1

Я пытаюсь создать простую текстовую игру на Python. Идея которого вращается вокруг колоды игральных карт, представляющих значки карты с A, 2,3,4,5,6,7,8,9,10, J, Q и K (Joker не используется) , Костюм карт будет представлен s, d, h и c. Например, «Туз сердец» будет представлен как «Ах».Python - вопрос по редактированию строк

Я использую две функции random.choice() для выбора случайной номинальной стоимости и случайного костюма, причем 10 представлено «X». Здесь я сталкиваюсь с моей проблемой. В идеале я хотел бы изменить «X», когда он появится на «10». Вот мой «тестовый» код для генерации случайной карточки:

import random 

firstvar = random.choice('A23456789XJQK') 
secondvar = random.choice('sdhc') 
newvar = firstvar + secondvar 
if newvar[0] == 'X': 
    newvar[0] = '10' 
    print newvar 

else: 
    print newvar 

Я быстро обнаружил, что это вызывает ошибку.

TypeError: «ул» объект не поддерживает назначение пункт

Короче говоря, мой вопрос: «Как бы я идти об изменении„X“в моей программе„10“

? Спасибо за любую помощь вы можете предложить.

ответ

2

изменить его, прежде чем сцепить.

firstvar = random.choice('A23456789XJQK') 
secondvar = random.choice('sdhc') 
newvar = (firstvar + secondvar) if firstvar != 'X' else ('10' + secondvar) 

в качестве альтернативы, не следует использовать «X "Начать с:

firstvar = random.choice(['A', '2', '3', ..., '10', ...]) 

Другой альтернативой может быть replace метод на строках:

newvar = firstvar.replace('X', '10') + secondvar 

Второй метод, вероятно, лучше всего подходит для данной ситуации, если вам нужно использовать„X“в других местах в вашем коде и это не может быть изменено. Стоит посмотреть на другие методы борьбы с неизменяемыми строками, потому что второе не всегда уместно.

+0

Я согласен с # 2, просто сделайте список и поставьте 10, так как именно это вы меняете сразу. – user470379

+0

Он отлично работает. Спасибо! –

+0

@ user470379 Правильно, это, наверное, лучше всего в этой ситуации, но неизменность строк - достаточно распространенная точка преткновения (я - хороший кодер python, и я по-прежнему путешествую по ней иногда), что стоит посмотреть на все варианты работы с это с более общей точки зрения. – aaronasterling

0

В python вы не можете изменить строку. Вы могли бы иметь дело с этим, создав новую строку прочесывают «10», а остальную часть исходной строки

newvar = '10' + newvar[1:] 

Но это действительно некрасиво. Вы лучше построение строки правильно в первую очередь:

firstvar = random.choice(['A','2','3','4','5','6','7','8','9','10','J','Q', 'K']) 
secondvar = random.choice('sdhc') 
newvar = firstvar + secondvar 

Если вы едете из других языков, которые вы можете использовать, чтобы думать об операциях, как модифицирующие строки. Вам лучше создать свою строку правильно. Конечно, если вы имеете дело со строками от пользовательского ввода, который отличается.

Смежные вопросы