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(实际使用)相当陌生。不,我不认为我能永久删除答案。谢谢大家\