Python——关于字符串编辑的问题

Python——关于字符串编辑的问题,python,string,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”表示。这就是我遇到问题的地方。理想情况下,当“X”显示为“10”时,我希望更改它。以下是我生成随机卡的“测试”代码: import random firstvar = r

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

我使用两个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:“str”对象不支持项目分配

简言之,我的问题是:“我如何将程序中的‘X’改为‘10’


感谢您提供的任何帮助。

在连接之前更改它

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

在python中,您不能修改字符串。您可以通过创建新的string梳理“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

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

我同意#2,只需将其列为一个列表,并放入10,因为这是您要更改的内容马上开始。@user470379对,在这种情况下,这可能是最好的,但字符串的不变性是一个常见的绊脚石(我是一个不错的python程序员,有时仍然会被它绊倒),因此值得从更一般的角度来研究处理它的所有选项。