Python - 关于字符串编辑的一个问题

时间:2010-10-29 01:59:08

标签: python string

我正在尝试用Python制作一个简单的基于文本的游戏。围绕一副扑克牌的想法,用A,2,3,4,5,6,7,8,9,10,J,Q和K表示卡面值(不使用小丑) 。卡的套装将由s,d,h和c表示。例如,“心中的王牌”将表示为Ah。

我使用两个random.choice()函数来选择随机面值和随机套装,其中10由'X'表示。这是我遇到问题的地方。理想情况下,我想在“10”时更改“X”。这是我生成随机卡的“测试”代码:

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'对象不支持项目分配

简而言之,我的问题是:“我如何将程序中的'X'更改为'10'?

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分: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”并且无法更改。值得研究处理不可变字符串的其他方法,因为第二种方法并不总是合适的。

答案 1 :(得分: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

如果您来自其他语言,您可能会习惯将操作视为修改字符串。最好先创建正确的字符串。当然,如果您正在处理来自不同用户输入的字符串。