这是我的代码:
def getGuessedWordd(secretWord, lettersGuessed):
lga = "".join(lettersGuessed)
swa = "".join(secretWord)
jihadi = str()
jihad=" "
for c in swa:
if c in lga:
print c
if c not in lga:
print "_"
所有值的打印输出如下:
一 p p 升 ë
我希望在迭代完成后将其打印为'apple'。我怎么能这样做?
答案 0 :(得分:1)
有三种方法可以解决这个问题。
首先,你没有理由在找到它们时逐个打印出这些字符。相反,将它们累积到list
(或更好,yield
它们),然后join
结果并在结尾打印出来。
例如:
def getGuessedWordd(secretWord, lettersGuessed):
lga = "".join(lettersGuessed)
swa = "".join(secretWord)
jihadi = str()
jihad=" "
result = []
for c in swa:
if c in lga:
result.append(c)
if c not in lga:
result.append("_")
print "".join(result)
其次,如果您必须在找到它们时打印它们,则无法使用print
。使用sys.stdout.write
。
第三,如果你可以升级到Python 3,那么你可以 使用print
。
您可以通过其他几种方法来改进此代码:
lga
和swa
。如果lettersGuessed
和secretWord
已经是字符串,则"".join(lettersGuessed)
与lettersGuessed
完全相同。但是,更重要的是,即使lettersGuessed
是一些完全不同的字符序列,也没关系,因为你用它们做的唯一事情是for
和in
检查。 / LI>
jihad
和jihadi
。str()
;它和""
一样。if
语句;只需使用else
。所以,我们可以简化整个事情:
def getGuessedWordd(secretWord, lettersGuessed):
result = []
for c in secretWord:
if c in lettersGuessed:
result.append(c)
else:
result.append("_")
print "".join(result)
一旦你这样做,很明显循环与列表理解相同:
def getGuessedWordd(secretWord, lettersGuessed):
result = [c if c in lettersGuessed else '_' for c in secretWord]
print "".join(result)
答案 1 :(得分:0)
您想导入sys并使用sys.stdout.write(c)