Python 将迭代项转换为字符串

Python 将迭代项转换为字符串,python,iteration,Python,Iteration,这是我的密码: 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:

这是我的密码:

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 "_"

所有值打印出来,如下所示:

a P P L e


我想在迭代完成后将其打印为“apple”。我该怎么做?

您想导入sys并使用
sys.stdout.write(c)
有三种方法可以解决此问题

首先,没有理由需要在找到字符时一个一个地打印出来。相反,将它们累积到一个
列表中(或者更好的是,
产生
它们),然后
加入结果并在最后打印出来

例如:

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

第三,如果您可以升级到Python3,那么就这样做,然后可以使用
print


可以通过以下几种其他方式改进此代码:

  • 不需要
    lga
    swa
    。如果
    lettsguesed
    secretWord
    已经是字符串,
    “.join(lettsguesed)
    lettsguesed
    完全相同。但是,更重要的是,即使
    lettersGuessed
    是一些完全不同的字符序列,这也无关紧要,因为您对它们所做的唯一事情就是
    进行
    检查
  • 您定义了两个从未使用过的变量,
    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)

def getGuessedWordd(secretWord,lettersGuessed):lga=“”.join(lettersGuessed)swa=“”.join(secretWord)jihadi=str()jihad=“”对于swa中的c:if c in lga:print c if c not in lga:print“u”您如何看到像
a p l e
那样打印出来的值?这段代码每行肯定只打印一个字符。如果您没有给我们提供实际一致的代码和输出,我们就无法告诉您如何修复它。*旁注:如果lga中没有c:
,只需执行
,否则:
我应该删除我的吗?没有看到这一点:(@woozyking:我想,如果你没有什么要添加的。请投票删除它。@woozyking:你甚至可以这样做吗?如果我删除我自己的答案,事实是它对低代表性的人不可见,对高代表性的人清楚地标记为已删除(并移到底部,因此不引人注目)对我来说已经足够好了。你真的能帮我烫一下答案吗?哦,我明白你的意思。我对SO(实际使用)相当陌生。不,我不认为我能永久删除答案。谢谢大家\