Python - вопрос по редактированию строк - PullRequest
1 голос
/ 29 октября 2010

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

Я использую две функции random.choice () для выбора случайного номинала и случайной масти, где 10 обозначено как «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: объект 'str' не поддерживает назначение элементов

Короче говоря, мой вопрос: «Как бы я изменил« Х »в моей программе на« 10 »?

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

Ответы [ 2 ]

2 голосов
/ 29 октября 2010

Измените его перед объединением.

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 голосов
/ 29 октября 2010

В 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...