我正在尝试用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'?
感谢您提供的任何帮助。
答案 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
如果您来自其他语言,您可能会习惯将操作视为修改字符串。最好先创建正确的字符串。当然,如果您正在处理来自不同用户输入的字符串。